我有一个垂直大的长图像,例如 500pt x 1000pt。
我正在尝试显示图像的最底部。 所以,我想剪掉图像的顶部。
但是,contentMode =spectToFil
裁剪图像的顶部和底部,并显示图像的中间。
下面有说明图片。
还有什么更好的办法吗?
注意:我无法使用contentMode = Bottom
。因为图片太大了。
最佳答案
您可以裁剪图像CGImage.cropping(to: CGRect)
。
将 CGRect
的原点设置为要开始裁剪的右上角,并将大小设置为所需裁剪的大小。然后从该 cgImage
初始化图像。
let foo = UIImage(named: "fooImage")
guard let croppedCGImage = foo?.cgImage?.cropping(to: CGRect(x: 200, y: 200, width: 375, height: 400) else { return }
guard let croppedImage = UIImage(cgImage: croppedCGImage) else { return }
编辑:使用@IBDesignable
和@IBInspectable
添加示例
Video showing storyboard/nib usage
@IBDesignable
class UIImageViewCroppable: UIImageView {
@IBInspectable public var isCropped: Bool = false {
didSet { updateImage() }
}
@IBInspectable public var croppingRect: CGRect = .zero {
didSet { updateImage() }
}
func updateImage() {
guard isCropped else { return }
guard let croppedCGImage = image?.cgImage?.cropping(to: croppingRect) else { return }
image = UIImage(cgImage: croppedCGImage)
}
}
关于swift - UIImageView 与aspectToFil 并仅裁剪图像的顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50619748/