您的位置:首页 > 其它

第12月第25天 ImagePickerSheetController

2017-09-25 17:52 183 查看
1.ImagePickerSheetController

open class ImagePickerSheetController: UIViewController, UITableViewDataSource, UITableViewDelegate, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout, UIViewControllerTransitioningDelegate {
...
lazy var backgroundView: UIView = {
let view = UIView()
view.backgroundColor = UIColor(white: 0.0, alpha: 0.3961)
view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(ImagePickerSheetController.cancel)))

return view
}()
...
override open func loadView() {
super.loadView()

view.addSubview(backgroundView)
view.addSubview(tableView)
}
...
// MARK: - Layout

open override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()

backgroundView.frame = view.bounds

let tableViewHeight = Array(0..<tableView.numberOfRows(inSection: 1)).reduce(tableView(tableView, heightForRowAt: IndexPath(row: 0, section: 0))) { total, row in
total + tableView(tableView, heightForRowAt: IndexPath(row: row, section: 1))
}

tableView.frame = CGRect(x: view.bounds.minX, y: view.bounds.maxY-tableViewHeight, width: view.bounds.width, height: tableViewHeight)
}


let authorization = PHPhotoLibrary.authorizationStatus()

if authorization == .notDetermined {
PHPhotoLibrary.requestAuthorization({ (status) -> Void in
DispatchQueue.main.async(execute: { () -> Void in
self.pickProfileImage(tap)
})
})
}

if authorization == .authorized {
let controller = ImagePickerSheetController()

controller.addAction(ImageAction(title: NSLocalizedString("Take Photo or Video", comment: "Action Title"), secondaryTitle: NSLocalizedString("Use this one", comment: "Action Title"), handler: { (_) -> () in

self.presentCamera()

}, secondaryHandler: { (action, numberOfPhotos) -> () in
controller.getSelectedImagesWithCompletion({ (images) -> Void in
self.profileImage = images[0]
self.userProfileImageView.image = self.profileImage
})
}))

controller.addAction(ImageAction(title: NSLocalizedString("Cancel", comment: "Action Title"), style: .cancel, handler: nil, secondaryHandler: nil))

present(controller, animated: true, completion: nil)
}

https://github.com/allenwong/30DaysofSwift/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: