2016-06-11 5 views
0

私はストーリーボードに制約を定義せず、ドラッグしていくつかのテキストフィールドとボタンをドロップしました。プログラムのサイズと場所をプログラムで更新しようとしています。私はそれらをIBOutletsと参照してviewDidLoad()の機能でCGRectMake()を使って更新しようとします。私のテキストフィールドとボタンは、ストーリーボードに従って場所に表示されます。繰り返しますが、これらの場所はランダムですが、私は制約を定義していません。swift autoLayoutはCGRectMakeをオーバーライドします

autoLayoutクラスを無効にしないでこの問題を解決する方法を知っている人はいますか?このプロジェクトにはもっと多くの作業が必要です。

+0

'viewDidLoad'はレイアウト情報を操作するのに間違った場所です。 – luk2302

+0

'CGRectMake()'は4つの数字を保持する構造体を作成するだけです。それでおしまい。それだけです。 ***は***何もしません。基本的にはあなたの問題とは無関係です。おそらく、あなたが私たちに伝えるべきことは、ビューの 'bounds'または' frame'プロパティを設定しているということです。それは関連するでしょう。 –

答えて

1

ストーリーボードにビューを追加する場合、制約は常にと定義されています。追加しないと、コンパイル時に自動的に追加されます。

あなたが本当にビューのための制約を希望しない場合は、逆説的にあなたがそれらを追加して確認する必要があります:あなたはエクスポートしたくないすべての制約のため

Remove At Build time

コードでは、translatesAutoresizingMaskIntoConstraintstrueに設定する必要があります。それ以外の場合は、frameは無視されます。

+0

また、ストーリーボードファイル全体の自動レイアウトをオフにすることもできます。 –

+0

@ ken-thomasesはちょっと過激です:)ほとんどの場合、自動レイアウトを完全に無効にしたくない場合がほとんどです。 – Sulthan

+0

これはほとんどの時間ではありません。質問者は明らかにこのストーリーボードに自動レイアウトを使用する準備ができていません。それは魔法ではない。あなたがそれをオフにすると、あなたに賭ける呪いはありません。あなたがそれを使用する予定がないなら、それをオフにすることは簡単で正しいことです。あなたが示唆するようにそれを妨害するために多大な努力を払うことはずっと悪いことです。 –

関連する問題