一, 聲明相框和按鈕
var imageView : UIImageView!
var button : UIButton!
imageView = UIImageView.init(frame: CGRectMake(50, 200, 300, 300))
imageView.backgroundColor = UIColor.cyanColor()
self.view.addSubview(imageView)
imageView.userInteractionEnabled = true
button = UIButton.init(frame: CGRectMake(50, 50, 300, 50))
button.backgroundColor = UIColor.redColor()
button.setTitle("選取本地圖片", forState: UIControlState.Normal)
button.addTarget(self,action:#selector(ViewController.huantu),forControlEvents:.TouchUpInside)
self.view.addSubview(button)
最初.png
二, 創(chuàng)建提示框
extension ViewController {
var selectorController: UIAlertController {
let controller = UIAlertController(title: nil, message: nil, preferredStyle: .ActionSheet)
controller.addAction(UIAlertAction(title: "取消", style: .Cancel, handler: nil)) // 取消按鈕
controller.addAction(UIAlertAction(title: "拍照選擇", style: .Default) { action in
self.selectorSourceType(.Camera)
}) // 拍照選擇
controller.addAction(UIAlertAction(title: "相冊(cè)選擇", style: .Default) { action in
self.selectorSourceType(.PhotoLibrary)
}) // 相冊(cè)選擇
return controller
}
func huantu(){
presentViewController(selectorController, animated: true, completion: nil)
}
func selectorSourceType(type: UIImagePickerControllerSourceType) {
imagePickerController.sourceType = type
// 打開圖片選擇器
presentViewController(imagePickerController, animated: true, completion: nil)
}
}
彈框.png
三, 擴(kuò)展圖片選擇和結(jié)果返回
extension ViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {
// MARK: 圖片選擇器界面
var imagePickerController: UIImagePickerController {
get {
let imagePicket = UIImagePickerController()
imagePicket.delegate = self
imagePicket.sourceType = .PhotoLibrary
return imagePicket
}
}
// MARK: 當(dāng)圖片選擇器選擇了一張圖片之后回調(diào)
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String: AnyObject]) {
dismissViewControllerAnimated(true, completion: nil) // 選中圖片, 關(guān)閉選擇器...這里你也可以 picker.dismissViewControllerAnimated 這樣調(diào)用...但是效果都是一樣的...
imageView.image = info[UIImagePickerControllerOriginalImage] as? UIImage // 顯示圖片
imageView.contentMode = .ScaleToFill // 縮放顯示, 便于查看全部的圖片
}
// MARK: 當(dāng)點(diǎn)擊圖片選擇器中的取消按鈕時(shí)回調(diào)
func imagePickerControllerDidCancel(picker: UIImagePickerController) {
picker.dismissViewControllerAnimated(true, completion: nil) // 效果一樣的...
}
選擇本地圖片.png
四, 最終效果
顯示效果.png