标题。
在网上找不到类似这个错误的东西,我不确定除了使用的方法之外我应该包含哪些信息。基本上,当我点击加号时,我会转到“添加图像”,然后在选择图像并裁剪后,它会将我带回此屏幕并缩小视图(添加那些黑条),而不是让我返回到之前的视图
要注意的另一件事是,这是在故事板上使用
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"
}
}
}
呃原来以前的程序员使用
present
来显示它,我将其更改为将控制器推到导航并解决了问题