import UIKit
import Foundation
class CameraView: UIView {
? ? var cameraButton : UIButton!
? ? var photoButton : UIButton!
? ? var image : UIImageView!
? ? override init(frame : CGRect)
? ? {
? ? ? ? super.init(frame: frame)
? ? ? ? cameraButtonMethods()
? ? ? ? photoButtonMethods()
? ? ? ? imageMethods()
? ? }
? ? required init?(coder aDecoder: NSCoder) {
? ? ? ? fatalError("init(coder:) has not been implemented")
? ? }
func cameraButtonMethods(){
? ? ? ? cameraButton = UIButton(type: .custom)
? ? ? ? cameraButton.frame = CGRect(x: 20, y: 400, width: 100, height: 40)
? ? ? ? cameraButton.setTitle("調(diào)用相冊(cè)", for: .normal)
? ? ? ? cameraButton.backgroundColor = UIColor.blue
? ? ? ? self.addSubview(cameraButton)
? ? }
? ? func photoButtonMethods(){
? ? ? ? photoButton = UIButton(type: .custom)
? ? ? ? photoButton.frame = CGRect(x: 255, y: 400, width: 100, height: 40)
? ? ? ? photoButton.backgroundColor = UIColor.blue
? ? ? ? photoButton.setTitle("調(diào)用相機(jī)", for: .normal)
? ? ? ? self.addSubview(photoButton)
? ? }
? ? func imageMethods(){
? ? ? ? image = UIImageView()
? ? ? ? image.image = UIImage(named: "image")
? ? ? ? image.frame = CGRect(x: 20, y: 40, width: 335, height: 335)
? ? ? ? self.addSubview(image)
? ? }
}
控制類(lèi) ViewController.swift 代碼內(nèi)容:
import UIKit
import AVFoundation
import AssetsLibrary
import Photos
class ViewController: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate {
? ? var cameraView = CameraView()
? ? override func viewDidLoad() {
? ? ? ? super.viewDidLoad()
? ? ? ? self.view.backgroundColor = UIColor.white
? ? ? ? cameraView = CameraView(frame: UIScreen.main.bounds)
? ? ? ? self.view.addSubview(cameraView)
? ? ? ? cameraView.cameraButton.addTarget(self, action: #selector(ViewController.cameraEvent), for: .touchUpInside)
? ? ? ? cameraView.photoButton.addTarget(self, action: #selector(ViewController.photoEvent), for: .touchUpInside)
? ? ? ? // Do any additional setup after loading the view, typically from a nib.
? ? }
? ? var picker: UIImagePickerController?
? ? //相冊(cè)
? ? @objc func cameraEvent(){
? ? ? ? let pickerCamera = UIImagePickerController()
? ? ? ? pickerCamera.allowsEditing = true
? ? ? ? pickerCamera.sourceType =? .photoLibrary
? ? ? ? pickerCamera.delegate = self
? ? ? ? self.present(pickerCamera, animated: true, completion: nil)
? ? }
? ? //相機(jī)
? ? @objc func photoEvent(){
? ? ? ? var sourceType = UIImagePickerController().sourceType
? ? ? ? sourceType = .camera
? ? ? ? if !UIImagePickerController.isSourceTypeAvailable(UIImagePickerController.SourceType.camera){
? ? ? ? ? ? print("無(wú)法調(diào)用相機(jī)")
? ? ? ? ? ? sourceType = UIImagePickerController.SourceType.photoLibrary //改為調(diào)用相冊(cè)
? ? ? ? }
? ? ? ? let pickerPhoto = UIImagePickerController()
? ? ? ? pickerPhoto.delegate = self
? ? ? ? pickerPhoto.allowsEditing = true//設(shè)置可編輯
? ? ? ? pickerPhoto.sourceType = sourceType
? ? ? ? self.present(pickerPhoto, animated: true, completion: nil)//進(jìn)入照相界面
? ? }
? ? //MARK: - UIImagePickerControllerDelegate、UINavigationControllerDelegate
? ? func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
? ? ? ? //UIImagePickerControllerOriginalImage? 原始圖像
? ? ? ? //UIImagePickerControllerEditedImage? ? 編輯后的圖片(開(kāi)啟編輯該對(duì)象才存在)
? ? ? ? var imagePickerc = info[UIImagePickerController.InfoKey.originalImage] as? UIImage
? ? ? ? if picker.allowsEditing {
? ? ? ? ? ? imagePickerc = (info[UIImagePickerController.InfoKey.editedImage] as? UIImage)!
? ? ? ? }
? ? ? ? cameraView.image.image = imagePickerc
? ? ? ? self.dismiss(animated: true, completion: nil)
? ? }
? ? override func didReceiveMemoryWarning() {
? ? ? ? super.didReceiveMemoryWarning()
? ? ? ? // Dispose of any resources that can be recreated.
? ? }
//
//? ? //按取消按鈕時(shí)候的功能
//? ? func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
//? ? ? ? //? ? 返回
//? ? ? ? picker.dismiss(animated: true)
//? ? }
}
運(yùn)行界面: