2017-02-13 8 views
0

私は画面の下に隠れているビューを持っていて、その上のscrollViewを調整して空白スペースを埋める必要があります。Swift:プログラムによる制約に調整されていないビュー

画面下部のビューはGADBannerViewで、固定高さは50(bannerHeight)です。その上のスクロールビューには、コンテナの下部に50(scrollConstraint)に等しい制約があります。写真を見る。 viewDidLoadで

enter image description here

以下にこれらの制約を設定していますされています

bannerHeight.constant = 0 
scrollConstraint.constant = 0 

これはbannerViewが消えた原因になっているが、スクロールビューは、それの元の位置に滞在し、空隙を充填されていません。

+0

後、私は2つの提案を持って、次を呼び出すことによって変更。 viewDidLoadで制約が完全に計算されないことがあります。 – Ocunidee

+0

'scrollConstraint.constant'の値として' bannerHeight.constant'を使う必要があります。 –

答えて

1

これは、自動的には発生しないため、強制的に制約の変更を考慮に入れることができます。代わりにviewDidLayoutSubviews()にコードを追加するか、viewDidLoad()で定数を0に設定した後で単にview.layoutIfNeeded()を呼び出します。これが機能しない場合

、あなたは、この代替的なアプローチを試すことができます。

があなたのストーリーボードに移動して、スクロールビューの下の制約(スクロールが50の底制約を閲覧できます青線)をクリックしてください。あなたの制約の詳細を見ることができるはず属性インスペクタで、それは識別子を要求する分野では、この

Attributes Inspector

ようになるはずです、それに名前を与える「ScrollViewBottom」または任意の名前あなた好き。

あなたのスクロールビューを構成し、これを考慮に入れるビューを強制する、正しいものを見つけ、最後に

for constraint in yourScrollView.superview!.constraints { 

if constraint.identifier == "ScrollViewBottom" { 
    constraint.constant = 0 
} 
} 

を次のように定数の変更するには、識別子名を使用するすべての制約を超える

今ループviewWillAppearであなたのコードを入れて試してみて、確認translatesAutoresizingMaskIntoConstraintsを作る=両方のバナーの虚偽とビューをスクロール:ストレート

view.layoutIfNeeded() 
関連する問題