2016-05-16 10 views
2

Wenn Sie .imageView.adjustsImageWhenAncestorFocused verwenden, erhalten Sie Ihr Bild skaliert, Sie erhalten es größer im Fokus. Das Bild geht über seine Grenzen hinaus. Das bedeutet, dass Sie nicht das ganze Bild sehen können - es ist auf allen Seiten bewältigt.tvOS adjustImageWhenAncestorFocused crops Bildsammlungsansicht Zelle

Sie haben:

enter image description here

Sie wollen:

enter image description here

+0

Ich habe das gleiche Problem in tvOS App. Wenn die Bildgröße nicht im Verhältnis 16: 9 ist, wird das Fokusbild nicht richtig angezeigt und das Bild wird durchbrochen. – vipulk617

+0

Können Sie dieses Problem lösen? – vipulk617

+0

@ vipulk617 Bitte lesen Sie meine Antwort. –

Antwort

1

Wenn Sie es aus der Box arbeiten möchten, müssen Sie Focused/Sichere Zone Größe zu reservieren erinnern (aus Dokumentation), wenn Sie Ihr Bild erstellen.

In meinem Fall habe ich meine Bilder vom Server und ich kann sie nicht bearbeiten. Was für mich gearbeitet - es ist Bild neu zeichnen rechts vor der Einstellung:

UIImage *oldImage = [UIImage imageNamed:@"example"]; 
    CGFloat width = cell.imageView.frame.size.width; 
    CGFloat height = cell.imageView.frame.size.height; 
    CGSize newSize = CGSizeMake(width, height); 
    CGRect newRect = CGRectIntegral(CGRectMake(0, 0, newSize.width, newSize.height)); 
    CGImageRef imageRef = oldImage.CGImage; 

    UIGraphicsBeginImageContextWithOptions(newSize, NO, 0); 
    CGContextRef resizeContext = UIGraphicsGetCurrentContext(); 

    CGContextSetInterpolationQuality(resizeContext, kCGInterpolationHigh); 
    CGAffineTransform flipVertical = CGAffineTransformMake(1, 0, 0, -1, 0, newSize.height); 

    CGContextConcatCTM(resizeContext, flipVertical); 
    CGContextDrawImage(resizeContext, newRect, imageRef); 

    CGImageRef newImageRef = CGBitmapContextCreateImage(resizeContext); 
    UIImage *newImageResized = [UIImage imageWithCGImage:newImageRef]; 

    CGImageRelease(newImageRef); 
    UIGraphicsEndImageContext(); 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     cell.imageView.image = newImageResized; 
    }); 

Es ist noch notwendig, auf diese Weise neu zu zeichnen, aber der Punkt ist, dass Sie benötigen, um Ihre UIImage erneut, um das Bild richtig angezeigt zu haben, zu zeichnen.

Code von here.

+0

Wann zeichnen Sie sie neu? Wenn Sie diesen Code dynamisch auf den Fokus anwenden, gibt es kein Leistungsproblem? – c0d3Junk13