2015-07-11 109 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。