78 lines
2.4 KiB
Swift
78 lines
2.4 KiB
Swift
//
|
|
// ImagePickerController.swift
|
|
// RxExample
|
|
//
|
|
// Created by Segii Shulga on 1/5/16.
|
|
// Copyright © 2016 Krunoslav Zaher. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
import UIKit
|
|
#if !RX_NO_MODULE
|
|
import RxSwift
|
|
import RxCocoa
|
|
#endif
|
|
|
|
class ImagePickerController: ViewController {
|
|
|
|
@IBOutlet var imageView: UIImageView!
|
|
@IBOutlet var cameraButton: UIButton!
|
|
@IBOutlet var galleryButton: UIButton!
|
|
@IBOutlet var cropButton: UIButton!
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
|
|
|
|
cameraButton.isEnabled = UIImagePickerController.isSourceTypeAvailable(.camera)
|
|
|
|
cameraButton.rx.tap
|
|
.flatMapLatest { [weak self] _ in
|
|
return Reactive<UIImagePickerController>.createWithParent(self) { picker in
|
|
picker.sourceType = .camera
|
|
picker.allowsEditing = false
|
|
}
|
|
.flatMap { $0.rx.didFinishPickingMediaWithInfo }
|
|
.take(1)
|
|
}
|
|
.map { info in
|
|
return info[UIImagePickerControllerOriginalImage] as? UIImage
|
|
}
|
|
.bindTo(imageView.rx.image)
|
|
.addDisposableTo(disposeBag)
|
|
|
|
galleryButton.rx.tap
|
|
.flatMapLatest { [weak self] _ in
|
|
return Reactive<UIImagePickerController>.createWithParent(self) { picker in
|
|
picker.sourceType = .photoLibrary
|
|
picker.allowsEditing = false
|
|
}
|
|
.flatMap {
|
|
$0.rx.didFinishPickingMediaWithInfo
|
|
}
|
|
.take(1)
|
|
}
|
|
.map { info in
|
|
return info[UIImagePickerControllerOriginalImage] as? UIImage
|
|
}
|
|
.bindTo(imageView.rx.image)
|
|
.addDisposableTo(disposeBag)
|
|
|
|
cropButton.rx.tap
|
|
.flatMapLatest { [weak self] _ in
|
|
return Reactive<UIImagePickerController>.createWithParent(self) { picker in
|
|
picker.sourceType = .photoLibrary
|
|
picker.allowsEditing = true
|
|
}
|
|
.flatMap { $0.rx.didFinishPickingMediaWithInfo }
|
|
.take(1)
|
|
}
|
|
.map { info in
|
|
return info[UIImagePickerControllerEditedImage] as? UIImage
|
|
}
|
|
.bindTo(imageView.rx.image)
|
|
.addDisposableTo(disposeBag)
|
|
}
|
|
|
|
}
|