2017-06-22 17 views
0

私は、ユーザーがプロファイル写真を選択できるボタンで構成された迅速なアプリのサインアップページを作成しています。その写真はプレースホルダー "新しく選択された画像でbutton.setImage()を使用することで、そのボタンを選択しました。私の問題は、ユーザーが画像を選択すると、ボタンの幅と高さを150x150に制限するのではなく、画面全体が完全に水平に伸びていることです。UIImagePickerオリエンテーションからの画像が正しくありません

これは私のボタンです:

let plusPhotoButton : UIButton = { 
    let b = UIButton(type: .system) 
    b.imageView?.clipsToBounds = true 
    b.setImage(#imageLiteral(resourceName: "plus_photo").withRenderingMode(.alwaysOriginal), for: .normal) 
    b.addTarget(self, action: #selector(setProfilePic), for: .touchUpInside) 
    return b 
}() 

私はこのようなビューに追加します。私は簡単に固定するために、このUIViewの拡張機能を使用して

fileprivate func setupPlusPhotoButton() { 
    view.addSubview(plusPhotoButton) 
    plusPhotoButton.anchor(top: view.topAnchor, paddingTop: 50, left: nil, paddingLeft: 0, right: nil, paddingRight: 0, bottom: nil, paddingBottom: 0, width: 150, height: 150) 
    plusPhotoButton.anchorCenter(x: view.centerXAnchor, y: nil) 
} 

extension UIView { 
func anchor(top: NSLayoutYAxisAnchor?, paddingTop: CGFloat, left: NSLayoutXAxisAnchor?, paddingLeft: CGFloat, right: NSLayoutXAxisAnchor?, paddingRight: CGFloat, bottom: NSLayoutYAxisAnchor?, paddingBottom: CGFloat, width: CGFloat, height: CGFloat) { 

    self.translatesAutoresizingMaskIntoConstraints = false 

    if let top = top { 
     self.topAnchor.constraint(equalTo: top, constant: paddingTop).isActive = true 
    } 
    if let left = left { 
     self.leftAnchor.constraint(equalTo: left, constant: paddingLeft).isActive = true 
    } 
    if let right = right { 
     self.rightAnchor.constraint(equalTo: right, constant: -paddingRight).isActive = true 
    } 
    if let bottom = bottom { 
     self.bottomAnchor.constraint(equalTo: bottom, constant: paddingBottom).isActive = true 
    } 
    if width != 0 { 
     self.widthAnchor.constraint(equalToConstant: width) 
    } 
    if height != 0 { 
     self.heightAnchor.constraint(equalToConstant: height).isActive = true 
    } 
} 

func anchorCenter(x: NSLayoutXAxisAnchor?, y: NSLayoutYAxisAnchor?) { 
    self.translatesAutoresizingMaskIntoConstraints = false 
    if let x = x { 
     self.centerXAnchor.constraint(equalTo: x).isActive = true 
    } 
    if let y = y { 
     self.centerYAnchor.constraint(equalTo: y).isActive = true 
    } 
} 

}

そして、私はこのように私のUIImagePickerControllerを提示:任意およびすべてのヘルプは高く評価され

func setProfilePic() { 
    print("setting profile picture") 
    let imagePickerVC = UIImagePickerController() 
    imagePickerVC.delegate = self 
    imagePickerVC.allowsEditing = true 
    present(imagePickerVC, animated: true, completion: nil) 
} 

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

    if let editedImage = info["UIImagePickerControllerEditedImage"] as? UIImage { 
     plusPhotoButton.setImage(editedImage.withRenderingMode(.alwaysOriginal), for: .normal) 
    } else if let originalImage = info["UIImagePickerControllerOriginalImage"] as? UIImage { 
     plusPhotoButton.setImage(originalImage.withRenderingMode(.alwaysOriginal), for: .normal) 
    } 

    plusPhotoButton.layer.cornerRadius = plusPhotoButton.frame.width/2 
    plusPhotoButton.layer.masksToBounds = true 
    plusPhotoButton.layer.borderColor = UIColor.black.cgColor 
    plusPhotoButton.layer.borderWidth = 3 

    dismiss(animated: true, completion: nil) 
} 

、ありがとうございました!

答えて

0

Nevermind - 私のエクステンションをチェックし、width制約のisActiveプロパティをtrueに設定しませんでした。デュフ

+0

本当に私の男 – Chisko

関連する問題