对于a UIImageView,我使用的是方面填充内容模式.没关系,但是对于某些图像,它会从顶部剪切,因为我使用过clipsToBounds = true.所以这就是我想要的:我想让两个过滤器同时处于活动状态,例如:
这是我设置为纵横填充的图像视图:
...和我设置的图像视图contentMode = .top:
所以我想合并这两种内容模式.可能吗?提前致谢.
您应该调整图像的大小,使其具有图像视图的宽度,但保持其纵横比.之后,将图像视图的内容模式设置为.top并为其启用剪切边界.
该resizeTopAlignedToFill函数是此答案的修改版本.
func setImageView() {
imageView.contentMode = .top
imageView.clipsToBounds = true
imageView.image = UIImage(named: "portrait").resizeTopAlignedToFill(newWidth: imageView.frame.width)
}
extension UIImage {
func resizeTopAlignedToFill(newWidth: CGFloat) -> UIImage? {
let newHeight = size.height
let newSize = CGSize(width: newWidth, height: newHeight)
UIGraphicsBeginImageContextWithOptions(newSize, false, UIScreen.main.scale)
draw(in: CGRect(origin: .zero, size: newSize))
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage
}
}
Run Code Online (Sandbox Code Playgroud)
小智 6
尝试这个:
imageView.contentMode = UIViewContentModeTop;
imageView.image = [UIImage imageWithCGImage:image.CGImage scale:image.size.width / imageView.frame.size.width orientation:UIImageOrientationUp];
Run Code Online (Sandbox Code Playgroud)