2016-11-26 15 views
0

私は関連する質問を(ほぼ同じタイトルで)読むが、それは私の場合ではない。私はMKMapViewを持っていて、画面の一番下にはScrollViewとImageViewがあります。それらは隠されていますが、それらを表示すると、私はMapViewのボトムコンストレインを変更したいと思います。問題は、下限制約を更新すると、MapViewで無視されます。ScrollViewとImageViewを透明にして確認しました。スクロールしても、なぜわかりません。一定の更新のための私のコードはこれです:プログラムで制約定数を変更する方法は?

bt.flyImg.isHidden = true 
bt.mapBottom.constant -= bt.flyImg.height 
bt.view.layoutIfNeeded() 


bt.flyImg.isHidden = false 
bt.mapBottom.constant += bt.flyImg.height 
bt.view.layoutIfNeeded() 

私はそれは私が必要な制約だ、制約をチェックします。私は他のクラスの定数更新しようとしたので、それが起こるかもしれないと思ったので、私は

func layout() 
    { 
     self.view.layoutIfNeeded() 
    } 

ような何かを書くことを試みたが、それは助けにはなりませんでした。何が間違っているのですか?

+0

下部制約を変更する代わりに、 'MKMapView'の高さ制約を変更してみてください。 –

+0

高さの制約がなく、画面の両側に固定されています – Jamil

答えて

0

最初に行うべきことは、(ストーリーボードを使用している場合は)接続インスペクタから制約がmapBottomに接続されているかどうかを確認することです。そうであるにもかかわらずまだ動作していない場合は、MapViewの下部制約をconstarintのスーパービューから更新する代替アプローチを試すことができます。

これを実行するには、MapViewの下部制約に識別子を付ける必要があります。これを行うには、ストーリーボードのドキュメントアウトラインのMapViewの制約を見て、下部の制約を見つけて、サイズインスペクタに移動して、制約に識別子を与えます。「MapViewBottom」としましょう。

これで、MapViewのスーパービュー制約を調べ、正しいものを特定して定数を変更する必要があります。

for constraint in yourMapView.superview!.constraints { 

    if constraint.identifier == "MapViewBottom" { 
     constraint.constant = flyImg.isHidden ? -flyImg.height : flyImg.height 
    } 
    } 

view.layoutIfNeeded() 
+0

なぜ制約を反復するのですか?それらは '@ IBOutlet'sと接続する必要があります。 – Mundi

+0

説明したように、私は彼に制約を変更する別の方法を提供しています。私はあなたが@IBOutletsを通してそれらを変更できることをよく承知しています。なぜなら、私は彼がConnections Inspectorから正しく参照されていることを最初に確認したからです。それでも失敗すれば、私は彼に同じことを達成するためのこの他の方法を提供しました。 – gwinyai

+0

@Mundi私の説明を参照してください – gwinyai

0

を必要に応じて、その後、私はあなたが最初にflyImgの高さにmapBottomの定数を減少させるかもしれないと思う制約を再計算するビューを呼び出すことができます。 bt.mapBottom.constant -= bt.flyImg.heightの代わりに、デフォルトの定数値に変更します。それは

bt.flyImg.isHidden = true 
bt.mapBottom.constant = 0 //if default value is 0. Just check it on storyboard. 
bt.view.layoutIfNeeded() 


bt.flyImg.isHidden = false 
bt.mapBottom.constant += bt.flyImg.height 
bt.view.layoutIfNeeded() 

それはまだ動作しない場合作るよりも、それは画面の両側に固定されている場合は、私たちが問題だかを把握できるように、詳細なソースコードを挿入してください。

関連する問題