edd*_*dit 7 ios swift photokit
我正在通过PHImageManager从相机胶卷加载图像,但返回的图像不是视网膜分辨率.我是否必须自己提供2倍和3倍的倍增器,或者我有什么问题吗?
这是我的代码:
class ReviewableImageView: UIImageView {
...unrelated code
imageRequestOptions = PHImageRequestOptions()
imageRequestOptions.deliveryMode = .HighQualityFormat
imageRequestOptions.resizeMode = .Exact
...unrelated code
self.contentMode = .ScaleAspectFit
self.backgroundColor = UIColor.clearColor()
self.userInteractionEnabled = true
... unrelated code
func reloadImage(){
let imageManager = PHCachingImageManager()//PHImageManager()
imageManager.requestImageForAsset(self.imageAsset,
targetSize: self.frame.size,
contentMode: .AspectFit,
options: imageRequestOptions,
resultHandler: { (image: UIImage!, info: [NSObject : AnyObject]!) in
self.image = image
})
}
}
Run Code Online (Sandbox Code Playgroud)
据我的实验与PHImageManager你必须提供一个targetSize以像素为单位.例如,假设您想要一个尺寸为400x800像素的图像.对于这种情况,您可以设置目标大小,如下所示:
// Set target size.
let targetSize = CGSizeMake(400, 800)
Run Code Online (Sandbox Code Playgroud)
关于你的代码示例,在Apple的文档中声明:
框架矩形的坐标始终以磅为单位指定.
因此,要设置正确的目标大小,您可以使用类似于以下内容的代码:
// Get scale factor associated with the screen.
let scale = UIScreen.mainScreen().scale
// Request the image.
imageManager.requestImageForAsset(self.imageAsset,
targetSize: CGSizeMake(self.frame.size.width * scale, self.frame.size.height * scale),
contentMode: .AspectFit,
options: imageRequestOptions,
resultHandler: { (image, info) -> Void in
// Handle the result here...
})
Run Code Online (Sandbox Code Playgroud)
很难从您的代码中判断您是否意识到将被多次resultHandler调用。第一次调用时,您可能会得到低分辨率低质量的图像。但最终它将使用正确缩放的图像来调用。
| 归档时间: |
|
| 查看次数: |
665 次 |
| 最近记录: |