2016-12-11 7 views
0

私はUIImageViewUIButtonを持っています。UIButtonは、UIImageViewの上に整列しています。今コードでは、UIImageViewの上部を変更していますが、UIButtonはそれに応じて更新されません。私はSetNeedsLayoutLayoutIfNeededUIButtonにしようとしましたが、何も動作しません。依存制約の変更時にUIViewの再レイアウトを作成する

override func viewDidLayoutSubviews() { 
    profileImageView.frame.origin.y = arcView.bounds.height/1.8 
    editProfileButton.layer.setNeedsDisplay() 
} 

私はストーリーボードに制約を設定しました。私は本当にここで何か助けていただければ幸いです。

+0

Ahmadさんの答えを見て、位置が変更されるビューを両方含む** UIViewに 'layoutIfNeeded'を必ず呼び出してください。例: 'view.layoutIfNeeded' – Rikh

答えて

1
  • まず、すべての制約(UIImageviewとUIButtonの両方)が正しく追加されていますか?

  • 第二:代わりに直接profileImageView.frame.origin.yを変更するので

、あなたは変更する必要があります。制約を作業するとき、あなたはそのconstantの値を変更することで、制約によってでもUIImageviewのorigin.yを変更する必要がありますイメージビューorigin.yを示す制約のconstant(最初のポイントが適用されている場合、この制約が存在していなければなりません。これが助けた

class ViewController: UIViewController { 
    // let's assume that this is the @IBOutlet of the constraint, I called it 'imageViewTopMargin': 
    @IBOutlet weak var imageViewTopMargin: NSLayoutConstraint! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // it's not necessary -for sure- to do this the in the viewDidLoad method 
     // but I'm doing this for demo purposes: 

     // let's say that you want to push the imageView to the bottom with extra 40 points: 
     imageViewTopMargin.constant += 40 
    } 
} 

希望:IBOutletとしてのViewControllerにこの制約を追加し、そのconstantプロパティの値を変更(コードスニペットのコメントを見て、それが答えの一部です)。

+0

ありがとう、私はちょうどUIImageViewの制約の参照を取ったと働いた。ありがとう..... – Santosh

関連する問題