2017-03-08 14 views
0

ビューコントローラに画像ビューがありますが、奇妙なことに画像ビュー内に画像を表示できません。これは、ページの中央または他のビューコントローラのどこかに配置されています。イメージビューとイメージピッカーの私のコードは以下の通りです。スウィフトの画像表示エリアに画像が表示されませんでした

image view in the VC

そして、これが出力されます。矢印画像は」予想地域でトンショーのdoesn:

and this is the output. Arrow image doesn' t show in expected area

profileImageView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true 
profileImageView.bottomAnchor.constraint(equalTo: nameTextField.topAnchor, constant: -12).isActive = true 
profileImageView.widthAnchor.constraint(equalToConstant: 150).isActive = true 
profileImageView.heightAnchor.constraint(equalToConstant: 150).isActive = true 

profileImageView.image = UIImage(named: "arrow_long_left") 
profileImageView.translatesAutoresizingMaskIntoConstraints = false 
profileImageView.contentMode = .scaleAspectFill 
profileImageView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleSelectProfileImageView))) 
profileImageView.isUserInteractionEnabled = true 
view.addSubview(profileImageView) 



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

     var selectedImageFromPicker: UIImage? 

     if let editedImage = info["UIImagePickerControllerEditedImage"] as? UIImage { 
      selectedImageFromPicker = editedImage 
     } else if let originalImage = info["UIImagePickerControllerOriginalImage"] as? UIImage { 
      selectedImageFromPicker = originalImage 
     } 

     if let selectedImage = selectedImageFromPicker { 
      profileImageView.image = selectedImage 
     } 

     dismiss(animated: true, completion: nil) 
    } 

func handleSelectProfileImageView() { 

     let imagePicker = UIImagePickerController() 

     if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.photoLibrary) { 
      imagePicker.delegate = self 
      imagePicker.sourceType = UIImagePickerControllerSourceType.photoLibrary 
      //picker.mediaTypes = UIImagePickerController.availableMediaTypes(for: .photoLibrary)! 
      imagePicker.allowsEditing = true 
      self.present(imagePicker, animated: true, completion: nil) 
     } 

     /*else if (UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.camera) { 
      let picker = UIImagePickerController() 
      picker.delegate = self 
      picker.sourceType = UIImagePickerControllerSourceType.camera; 
      picker.allowsEditing = true 
      present(picker, animated: true, completion: nil) 

     }*/ 
    } 
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { 
     print("canceled picker") 
     dismiss(animated: true, completion: nil) 
    } 

答えて

1

あなたのコードはここにオフになっている:

profileImageView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true 
profileImageView.bottomAnchor.constraint(equalTo: nameTextField.topAnchor, constant: -12).isActive = true 
profileImageView.widthAnchor.constraint(equalToConstant: 150).isActive = true 
profileImageView.heightAnchor.constraint(equalToConstant: 150).isActive = true 

私の推測では、あなたがより多くのこのような何かをしたいです:

profileImageView.leadingAnchor.constraint(equalTo: nameTextField.trailingAnchor, constant:10).isActive = true 
profileImageView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant:10).isActive = true 
profileImageView.topAnchor.constraint(equalTo: nameTextField.topAnchor).isActive = true 
profileImageView.bottomAnchor.constraint(equalTo: emailTextField.bottomAnchor).isActive = true 

幅と高さを150に固定する場合は、少し調整する必要があります。しかし、今はビューのcenterXに固定されているので、水平に配置されています。名前の下に固定されていますTextField - もちろん名前の上ですTextField

+0

ありがとうdmorrow、それは素晴らしい作品です!しかし、あなたが "profileImageView.widthAnchor.constraint(equalToConstant:80).isActive = trueを使って幅と高さを調整しようとしたときに言ったように、 profileImageView.heightAnchor.constraint(equalToConstant:80).isActive = true"コードブロック、仕事。どうすればいいですか、何か提案がありますか? – gozdebal

+0

@gozdebalイメージの高さ/幅を送信しようとしている場合は、イメージを拘束し過ぎるので、後ろまたは下のアンカーを設定しないでください。レイアウトは、さまざまなサイズのデバイスにどのように反応させるかによって異なります – dmorrow

関連する問題