tvOS adjustsImageWhenAncestorFocused 裁剪图像收集视图单元格
Posted
技术标签:
【中文标题】tvOS adjustsImageWhenAncestorFocused 裁剪图像收集视图单元格【英文标题】:tvOS adjustsImageWhenAncestorFocused crops image collection view cell 【发布时间】:2016-05-16 11:32:33 【问题描述】:当您使用.imageView.adjustsImageWhenAncestorFocused
时,您的图像会被缩放,焦点会变得更大。图像超出了它的界限。这意味着您看不到完整的图像 - 它的各个方面都得到了应对。
你有:
你想要:
【问题讨论】:
我在 tvOS 应用程序中遇到了同样的问题。如果图像尺寸不是 16:9 比例,则焦点图像无法正确显示并且图像被裁剪。 你能解决这个问题吗? @vipulk617 请阅读我的回答。 @vipulk617 link 【参考方案1】:如果您希望它直接使用,则需要记住在创建图像时保留重点/安全区域大小(来自文档)。
就我而言,我有来自服务器的图像,但我无法编辑它们。 什么对我有用 - 它是在设置之前重绘图像:
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;
);
这种方式也不需要重绘,关键是你需要重新绘制UIImage
才能让你的图片正常显示。
来自here的代码。
【讨论】:
什么时候重新绘制它们?如果您在焦点上动态应用此代码,是否存在性能问题?以上是关于tvOS adjustsImageWhenAncestorFocused 裁剪图像收集视图单元格的主要内容,如果未能解决你的问题,请参考以下文章