1

사용자가 이미지를 두드리는 데 너무 오래 걸리는 경우 탭 제스처 인식기를 사용하는 이미지에 활동 표시기를 추가하는 방법을 알고 싶습니다. 앱이 사용자가 탭하면 내가이 액턴을 추가하는 방법을 코드에서 알 수 없습니다 응답하지 않는 그림 enter image description here탭 제스처 인식기를 사용하는 이미지에 활동 표시기를 추가하는 방법

이 내가 imagePicker과 표시를 사용하고

다음
 override func viewDidLoad() { 
      super.viewDidLoad() 

    profileImage.layer.cornerRadius = profileImage.frame.size.width/2 
      profileImage.clipsToBounds = true 
      profileImage.contentMode = .scaleAspectFill 
      let tapGestur = UITapGestureRecognizer(target: self, action: #selector(SignupVC.selectProfileImage)) 
      profileImage.addGestureRecognizer(tapGestur) 
      profileImage.isUserInteractionEnabled = true 
    } 

@objc func selectProfileImage() { 
     let pickerController = UIImagePickerController() 
     pickerController.delegate = self 
     PiActivityIndicator.startAnimating() 
     present(pickerController, animated: true, completion: nil) 
     pickerController.allowsEditing = true 

    } 

    extension SignupVC: UINavigationControllerDelegate,UIImagePickerControllerDelegate { 


     func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 

      if let image = info["UIImagePickerControllerOriginalImage"] as? UIImage { 
       selectedImage = image 
       profileImage.image = image 
       self.profileActivityIndicator.startAnimating() 

      } 


      dismiss(animated: true, completion: nil) 
     } 
    } 
+0

이미지보기에서 활동 표시기를 설정할 수 있습니다. –

+0

내가 그 또는 다른 솔루션을 할 수있는 방법 – mazenqp

답변

0

탭 제스처 코드를입니다 storyBoard에서 제스처 대신 버튼을 사용합니다. 조치 문제를 보여줍니다. 이미지 피커 로딩 시간까지 활동 표시 참조

에 대한 코드 아래

사용

import UIKit 

class ProfileViewController: UIViewController,UIImagePickerControllerDelegate, UINavigationControllerDelegate { 

    @IBOutlet weak var profileImageView: UIImageView! 

    @IBOutlet weak var Spinner: UIActivityIndicatorView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     Spinner.isHidden = true 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    @IBAction func imageSelectAction(_ sender: Any) { 
     //your tap gesture action like 
     //show and start animating spinner 
     //animate till output is not achieved 
     Spinner.isHidden = false 
     self.Spinner.startAnimating() 

     //Initiate a picker here 
     let picker = UIImagePickerController() 
     //Delegates 
     picker.delegate = self 
     picker.allowsEditing = true 
     //present to call imagePickerController delegate function 
     present(picker, animated: true, completion: nil) 
    } 

    //delegate method 
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 
     //selected image from picker 
     var selectedImageFromPicker: UIImage? 
     //additional checks if required 
     if let editedImage = info["UIImagePickerControllerEditedImage"] as? UIImage 
     { 
      selectedImageFromPicker = editedImage 
     } 
     else if let originalImage = info["UIImagePickerControllerOriginalImage"] as? UIImage 
     { 

      selectedImageFromPicker = originalImage 
     } 

     //here set value in your outlet profile image 
     if let selectedImage = selectedImageFromPicker 
     { 
      profileImageView.image = selectedImage 
     } 

     //Hide spinner and stop animating 
     Spinner.isHidden = true 
     self.Spinner.stopAnimating() 
     dismiss(animated: true, completion: nil) 

    } 

    //if picker is cancelled in any case without selection 
    func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { 
     print("canceled picker") 
     //if picker is cancelled so need to hide animating spinner 
     Spinner.isHidden = true 
     self.Spinner.stopAnimating() 
     dismiss(animated: true, completion: nil) 
    } 
} 

또한 내가 당신의 탭 제스처 내 버튼 액션 코드를 추가로 회를 시작 버튼을 사용 편의를 위해 TapGesture를 사용할 수있다 제스처 을 누르고 피커 대리인의 애니메이션 회 전자 숨기기

+0

나는이 문제를 직면하면이 – mazenqp

+0

을 물어볼 것이다 –

+0

나는이 방법이 옳다고 생각하지만 내가 쓴 모든 코드를 삭제할 수 없다고 생각한다. 아이디어는 단순한 트라이이다. 내 코드에서 내 메소드를 수행하십시오 내 코드는 코드가 없습니다 ibAction 만 탭 동작 제발 – mazenqp