2015-07-11 70 views
2

在我的iOS应用程序中,我想从照片库中抓取图像并将它们裁剪为方形格式。 UIImagePickerController照顾好了这一点,但有一个小问题:当我从库中选择一幅横向照片时,它不会填充裁剪区域(对于纵向图像)。这允许用户选择非正方形区域。 有没有办法强制图像采集器垂直填充作物区域就像它水平 - 没有实现我自己的图像选择器?初始填充图像UIImagePickerController

我的代码:

class AddProfileViewController: UIViewController, UIGestureRecognizerDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate { 

    @IBOutlet weak var profileImageView: EnhancedImageView! 
    let imagePicker = UIImagePickerController() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // ... 

     imagePicker.delegate = self 
    } 

    func profileImageTapped() { 
     imagePicker.allowsEditing = true 
     imagePicker.sourceType = .PhotoLibrary 
     presentViewController(imagePicker, animated: true, completion: nil) 
    } 

    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) { 
     // ... 
    } 

    func imagePickerControllerDidCancel(picker: UIImagePickerController) { 
     dismissViewControllerAnimated(true, completion: nil) 
    } 
} 

选择风景图像,它看起来像这样:

image picker with horizontal image

相反,我想的图像水平和垂直延伸到裁剪框,所以图像选择器将始终返回一个方形图像。

+0

目前还没有答案 - 如果不编写自己的图像选择器,可能无法做到这一点。以下是我现在如何解决(或避免)它 - 解决方案的更多方法:如果用户没有放大图像的任何部分,图像的中心就是用户想要的最接近的部分,并且我通过切割两边的等宽切片来获得方形图像。 – jerry

回答

0

要关闭这个问题 - 这里是我如何解决它:

垂直延伸的图像边界似乎并不可能与标准图像拾取。选项是创建自己的图像选择器或使用以下解决方法,这在大多数情况下可能已足够:

如果用户没有放大图像的任何部分,图像的中心就是最好的近似用户需要,并且通过切割两侧的等宽片来获得正方形图像。

0

我在故事板中指定了我的图像视图高度和宽度(90x90),并在故事板中选择了Aspect Fill和Clip to Bounds。如果用户没有放大,图像会从中心裁剪到90x90。