Swift XCode 图像选择器/裁剪控制器在选择和缩小屏幕后消失

问题描述 投票:0回答:1

标题。

在网上找不到类似这个错误的东西,我不确定除了使用的方法之外我应该包含哪些信息。基本上,当我点击加号时,我会转到“添加图像”,然后在选择图像并裁剪后,它会将我带回此屏幕并缩小视图(添加那些黑条),而不是让我返回到之前的视图

要注意的另一件事是,这是在故事板上使用

present
提出的观点
let obj = UIStoryboard.init(name: "SellMyStuff", bundle: nil).instantiateViewController(withIdentifier: "addMarketItemVC")as! AddMarketItemVC

这是我选择图片后的视图

这就是它应该让我回到

用于打开图像选择器的代码

func openImageSelectionAlert() {
        let alertMessage = UIAlertController(title: "Choose image", message: "", preferredStyle: .alert)
        let cameraAction = UIAlertAction(title: "Camera", style: .default) { (act) in
            if UIImagePickerController.isSourceTypeAvailable(.camera) {
                let imagePicker = UIImagePickerController()
                imagePicker.delegate = self
                imagePicker.sourceType = .camera;
                imagePicker.allowsEditing = true
                self.present(imagePicker, animated: true, completion: nil)
            }
            
        }
        alertMessage.addAction(cameraAction)
        let galleryAction = UIAlertAction(title: "Gallery", style: .default) { (act) in
            if UIImagePickerController.isSourceTypeAvailable(.photoLibrary) {
                let imagePicker = UIImagePickerController()
                imagePicker.delegate = self
                imagePicker.sourceType = .photoLibrary;
                imagePicker.allowsEditing = true
                self.present(imagePicker, animated: true, completion: nil)
            }
            
        }
        alertMessage.addAction(galleryAction)
        let action = UIAlertAction(title: "Cancel", style: .destructive, handler: nil)
        alertMessage .addAction(action)
        //alertMessage.view.tintColor = UIColor.red
        self.present(alertMessage, animated: true, completion: nil)
    }

裁剪视图控制器

extension AddMarketItemVC : CropViewControllerDelegate {
    public func cropViewController(_ cropViewController: CropViewController, didCropToImage image: UIImage, withRect cropRect: CGRect, angle: Int) {
        self.croppedRect = cropRect
        self.croppedAngle = angle
        updateImageViewWithImage(image, fromCropViewController: cropViewController)
    }
    
    public func cropViewController(_ cropViewController: CropViewController, didCropToCircularImage image: UIImage, withRect cropRect: CGRect, angle: Int) {
        self.croppedRect = cropRect
        self.croppedAngle = angle
        updateImageViewWithImage(image, fromCropViewController: cropViewController)
    }
    
    public func updateImageViewWithImage(_ image: UIImage, fromCropViewController cropViewController: CropViewController) {
        
        
        if self.imageSelection==1 {
            self.imageItem1.image=image
            self.camera1image.isHidden = true
          
          //  self.imageItem1.contentMode = .scaleAspectFit
            
            if isFromEdit{
                self.updateElement(element: self.imageItem1.image, index: 0)
            }else{
                self.insertElementAtIndex(element: self.imageItem1.image , index: 0)
            }
            
            
        }else if self.imageSelection==2{
            self.imageItem2.image=image
            self.camera2image.isHidden = true
           // self.imageItem2.contentMode = .scaleAspectFit
            if isFromEdit{
                self.updateElement(element: self.imageItem2.image, index: 1)
            }else{
                self.insertElementAtIndex(element: self.imageItem2.image, index: 1)
            }
        }else{
            self.imageItem3.image=image
            self.camera3image.isHidden = true
           // self.imageItem3.contentMode = .scaleAspectFit
            if isFromEdit{
                self.updateElement(element: self.imageItem3.image, index: 2)
            } else {
                self.insertElementAtIndex(element: self.imageItem3.image , index: 2)
            }
        }
      
        print("Dismissed crop view controller")
        cropViewController.dismiss(animated: true, completion: nil)
        
        
  
    }
    
   
}

ImagePickerControllerDelegate

extension AddMarketItemVC : UIImagePickerControllerDelegate, UINavigationControllerDelegate {
    //MARK: - Image Picker -
    func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
        picker.dismiss(animated: true, completion: nil)
    }
    
    
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        
        //        let image = info[UIImagePickerControllerEditedImage]
        //        self.imageView_profileImage.image = image as? UIImage
        //        self.presenter?.uploadImage(image: image as! UIImage)
        //
        
        let image = info[UIImagePickerController.InfoKey(rawValue: UIImagePickerController.InfoKey.editedImage.rawValue)]
        
        
        let cropController = CropViewController.init(croppingStyle: .default, image: image as! UIImage)
        cropController.delegate = self
        
        picker.dismiss(animated: true, completion: {
            self.present(cropController, animated: true, completion: nil)
        })
    }
    
    func insertElementAtIndex(element: UIImage?, index: Int) {
       /* while self.imageArray.count <= index {
            self.imageArray.append(dummy_image)
        }
        */
        
        
        self.imageArray.insert(element!, at: index)
    }
    
    func updateElement(element: UIImage?,index: Int){
        self.imageArray[index] = element!
        
        if self.editImageArray.count > index + 1 {
            self.editImageArray[index].id = "0"
        }
        
        
    }
    
    
}
ios swift uiimagepickercontroller
1个回答
0
投票

呃原来以前的程序员使用

present
来显示它,我将其更改为将控制器推到导航并解决了问题

© www.soinside.com 2019 - 2024. All rights reserved.