2016-06-16 11 views
0

私はUIPageViewControllerにはUIViewControllerが含まれています。 VCのビューには、上部にUIImageView(アスペクトフィッティング)、下部にUITextViewが含まれています。 ImageViewのための LayoutConstraintsは以下のとおりです。ビューの負荷に対する定数の変更は無効です

  • 固定幅:VCのクラスにアウトレット
  • センターXに等しいですがありますのVCクラスにアウトレット
  • 固定高さを持っています

    :superviews centerX
  • トップImageViewのためLayoutConstraintsである

(+8)Superviews MarinTopに等しいです。

  • トップImageViewの底
  • 底に等しいMarginBottom(+8)をsuperviewsに等しい
  • 幅は、予想通り、この作品等しいsuperviews幅(乗数は0.8である)

あります。

しかし、VCがロードされ、表示するイメージがあるとき、私はimageViewのサイズを変更したいと思います。最小サイズと最大サイズがあり、イメージビューが小さいか大きい場合は、サイズを変更する必要があります。それ以外の場合、イメージビューはイメージのサイズを取得する必要があります。

実際の画像のサイズを計算し、2つのLayoutConstraintsの定数を設定します。値は正しいが、ImageViewは変更されない。

viewWillLayoutSubviewsに設定しようとしましたが、変更はしませんでした。

私は間違っていますか?

+0

すべての制約を同時に満たすことのできない警告がコンソールに表示されますか? –

答えて

2

はviewDidLayoutSubviews内部のあなたのビューを更新してみてください。

- (void) viewDidLayoutSubviews { 
// setup your constraints here 
} 

・ホープ、このことができます。

0

を以下にブロック

dispatch_async(dispatch_get_main_queue(), { 

}) 
0

であなたの変更制約コードを書く柔軟にImageViewのテキストフィールドとの間の垂直方向の間隔を変更してみてください(> = 0)。それでも問題が解決しない場合は、追加:

[view setNeedsLayout]; 
[view layoutIfNeeded]; 

を使用すると、新しいイメージのサイズにImageViewのサイズを調整した後。

関連する問題