2016-06-26 10 views
0

私はすべての制約を削除し、コードから新しいものを追加することが、彼らはここ なぜ私の制約が機能しないのですか?

を台無しにされていますビュー負荷が私のコードであるときに(私はそれが持つ悪いスタイルを作られたコードであることを知っているInterface Builderでいくつかの制約がありますそれのために残念フラグなど、しかし、問題は、なぜそれがレイアウト間違っを作っている):

override func viewWillAppear(animated: Bool) { 

    super.viewWillAppear(true) 

    self.view.layoutIfNeeded() 
    self.view.setNeedsUpdateConstraints() 
    self.view.layoutIfNeeded() 
      self.buttonsArray.forEach() { button in 
       NSLayoutConstraint(item: button, attribute: .CenterX, relatedBy: .Equal, toItem: self.view, attribute: .CenterX, multiplier: 1, constant: 0).active = true 

       NSLayoutConstraint(item: button, attribute: .CenterY, relatedBy: .Equal, toItem: self.view, attribute: .CenterY, multiplier: 1, constant: 0).active = true 

       NSLayoutConstraint(item: button, attribute: .Height, relatedBy: .Equal, toItem: self.view, attribute: .Height, multiplier: 0.15, constant: 0).active = true 
      } 
} 

var flagForOriginalConstraints = 0 
override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews() 

    if flagForOriginalConstraints == 0 { 
    self.constraintsArray = self.view.constraints 
    self.flagForOriginalConstraints += 1 
     return 
    } 
    if flagForOriginalConstraints == 1 { 
     self.view.removeConstraints() 
     self.flagForOriginalConstraints += 1 
     return 
    } 
} 

答えて

0

ここ

if flagForOriginalConstraints == 0 { 
    self.constraintsArray = self.view.constraints 
    self.flagForOriginalConstraints += 1 
     return 
    } 

リターンを削除する最初の時間のようなあなただけのflagForOriginalConstraintsをインクリメントしているようですカウントしてから、関数は

+0

thatsを返します。 –

関連する問題