Tim*_*ing 5 objective-c uiimagepickercontroller uiimage ios
我遇到了问题UIImagePickerController,我已启用编辑,但发生的情况是当用户裁剪图像时,方形裁剪显示用户将要裁剪的内容与实际裁剪的内容之间存在偏移量。它只适用于大约 20 像素,但现在是一个大问题。我提供了两个演示该问题的屏幕截图。在第一个中,裁剪方块似乎延伸到图像上方,但是当选择图像时,图像的顶部设置正确(图像只是屏幕截图,因此图像的顶部是状态栏的顶部)。在第二个屏幕截图中,如果您尝试将裁剪放在照片的最底部,它会弹回到这个位置,因此用户认为图像的底部不包括在内,而事实上,当选择它时,它是不包括在内的。有点头疼。似乎在模拟器中与在设备上执行相同的操作。有人知道为什么会这样吗?


这并不能解决显示裁剪框 20px 的显示问题,但您可以在用户选择图像时通过执行以下操作来避免最终裁剪图像的错误:
// MARK: - UIImagePickerControllerDelegate
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
picker.dismiss(animated: true, completion: { [weak self] in self?.didCompleteSelection(image: nil) })
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
picker.dismiss(animated: true, completion: { [weak self] in
guard
let originalImage = info[UIImagePickerControllerOriginalImage] as? UIImage,
let cropRect = info[UIImagePickerControllerCropRect] as? CGRect
else { return }
//crop with status-bar offset due to iOS bug introduced in iOS 8 with status bar offset
let offsetRect = cropRect.offsetBy(dx: 0, dy: UIApplication.shared.statusBarFrame.size.height)
guard let croppedImage = originalImage.cgImage?.cropping(to: offsetRect) else { return }
self?.didCompleteSelection?(image: croppedImage)
})
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1349 次 |
| 最近记录: |