以下の参考サイトを参考にSwift4に変えながらコードを書いていたところ、
Swift
1 imageCropVC.delegate = self as? RSKImageCropViewControllerDelegate 2 imageCropVC.dataSource = self as! RSKImageCropViewControllerDataSource
の部分でThread 1: signal SIGABRTとエラーが出てしまいます。実行するまでは何もエラーが出ないのですが写真を選択するとアプリが落ちてエラーが出ます。
どうしたらよいでしょうか?
コード全体
Swift
1import UIKit 2import RSKImageCropper 3 4class SettingViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { 5 6 var selectedimage: UIImage? 7 let userDefaults = UserDefaults.standard 8 override func viewDidLoad() { 9 super.viewDidLoad() 10 // Do any additional setup after loading the view. 11 } 12 13 override func didReceiveMemoryWarning() { 14 super.didReceiveMemoryWarning() 15 // Dispose of any resources that can be recreated. 16 } 17 18 @IBAction func picPicture(_ sender: Any) { 19 if UIImagePickerController.isSourceTypeAvailable(.photoLibrary) { 20 let pickerView = UIImagePickerController() 21 pickerView.sourceType = .photoLibrary 22 pickerView.delegate = self 23 self.present(pickerView, animated: true) 24 } 25 } 26 27 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 28 selectedimage = info[UIImagePickerControllerOriginalImage] as! UIImage 29 self.dismiss(animated: true) 30 if let image = selectedimage { 31 var imageCropVC: RSKImageCropViewController = RSKImageCropViewController(image: image, cropMode: RSKImageCropMode.custom) 32 imageCropVC.delegate = self as? RSKImageCropViewControllerDelegate 33 imageCropVC.dataSource = self as! RSKImageCropViewControllerDataSource 34 self.navigationController?.pushViewController(imageCropVC, animated: true) 35 } 36 } 37 38 // キャンセルがおされたらトリミング画面を閉じます 39 func imageCropViewControllerDidCancelCrop(controller: RSKImageCropViewController!) { 40 self.navigationController?.popViewController(animated: true) 41 } 42 43 func imageCropViewController(controller: RSKImageCropViewController!, willCropImage originalImage: UIImage!) { 44 } 45 46 // トリミング済みの画像がかえされます 47 func imageCropViewController(controller: RSKImageCropViewController!, didCropImage croppedImage: UIImage!, usingCropRect cropRect: CGRect) { 48 let imageData = UIImageJPEGRepresentation(croppedImage, 1); 49 userDefaults.set(imageData, forKey: "image") 50 userDefaults.synchronize() 51 } 52 53 func imageCropViewControllerCustomMaskRect(controller: RSKImageCropViewController!) -> CGRect { 54 55 var maskSize: CGSize 56 var width, height: CGFloat! 57 58 width = self.view.frame.width 59 60 // 縦横比 = 1 : 2でトリミングしたい場合 61 height = self.view.frame.width / 2 62 63 maskSize = CGSize(width: self.view.frame.width, height: height) 64 65 var viewWidth: CGFloat = controller.view.frame.width 66 var viewHeight: CGFloat = controller.view.frame.height 67 68 var maskRect: CGRect = CGRect(x: (viewWidth - maskSize.width) * 0.5, y: (viewHeight - maskSize.height) * 0.5, width: maskSize.width, height: maskSize.height) 69 70 return maskRect 71 } 72 73 // トリミングしたい領域を描画(今回は四角な領域です・・・) 74 func imageCropViewControllerCustomMaskPath(controller: RSKImageCropViewController!) -> UIBezierPath! { 75 var rect: CGRect = controller.maskRect 76 var point1: CGPoint = CGPoint(x: rect.minX, y:rect.maxY) 77 var point2: CGPoint = CGPoint(x: rect.maxX, y:rect.maxY) 78 var point3: CGPoint = CGPoint(x: rect.maxX, y:rect.minY) 79 var point4: CGPoint = CGPoint(x: rect.minX, y:rect.minY) 80 var square: UIBezierPath = UIBezierPath() 81 square.move(to: point1) 82 square.addLine(to: point2) 83 square.addLine(to: point3) 84 square.addLine(to: point4) 85 square.close() 86 87 return square 88 } 89 90 func imageCropViewControllerCustomMovementRect(controller: RSKImageCropViewController!) -> CGRect { 91 return controller.maskRect 92 } 93 94} 95
回答1件
あなたの回答
tips
プレビュー