制約を使い始めたばかりですが、制約を使用して UIView の場所とサイズの両方を設定する必要があるのは面倒です。4 つの制約は過剰に思えます。(より少ない制約でできることは間違いありません。私はまだ非常に基本的な理解で作業しています!)したがって、制約を使用せずに UIView のサイズを設定することは可能ですか?次に、場所を設定します。制約を使用していますか? サイズを設定するために私が知っている唯一の非制約方法には、原点の設定も含まれます。
4 に答える
AutoLayoutを使用してビューの位置とサイズを管理している場合は、ビューのフレームを調整することはお勧めしません。ほとんどの場合、これはとにかく機能しません。
ただし、AutoLayoutでさえサイズと位置について知る必要があります。したがって、常に両方を指定する必要があります。あなたが尋ねたように、4つ未満の制約を設定することが可能である場合(たとえば、その位置を指定しないことによって)、AutoLayoutはビューを表示する場所を知りません。
4つの制約を指定しなければならないことについてあなたが難しいと思うことは何ですか?これは、XIB/ストーリーボードファイルで自動的に行われます。すべてをコードチェックアウトで記述している場合は、「視覚的な」文字列表現を使用して位置とサイズを指定できる便利なASCIIアート形式の文字列を使用できます。
おそらく:
ビューのジオメトリは、そのフレーム、境界、および中心のプロパティによって定義されます。フレームは、スーパービューの座標系でビューの原点と寸法を定義し、レイアウト中にビューのサイズまたは位置を調整するために一般的に使用されます。centerプロパティを使用すると、サイズを変更せずにビューの位置を調整できます。境界は、ビューが表示するときのビューの内部寸法を定義し、カスタム描画コードでほぼ排他的に使用されます。フレームと境界の長方形のサイズ部分は 結合されているため、どちらかの長方形のサイズを変更すると、両方のサイズが更新されます。
したがって、理論的には、原点が常に0,0である境界のサイズを変更できます。
ビューのフレーム(原点とサイズの両方)を設定しようとしているようです。
これを行うには、次のようなものを使用できます。
CGRect newFrame = CGRectMake( xCoordinate, yCoordinate, width, height);
myView.frame = newFrame;
xCoordinate、yCoordinate、幅、高さは自由に指定できます。
それが役立つことを願っています! お探しの回答ではない場合はお知らせください。できる限りお手伝いさせていただきます。
ビューのプロパティを設定bounds
すると、原点を明示的に設定しなくてもサイズが変更されます-ドキュメントから:
境界サイズを変更すると、中心点を基準にしてビューが拡大または縮小されます。
制約に変換される適切なサイズ変更マスク (おそらく全体的に柔軟なマージン?) を設定してから、配置制約を使用してそれを移動できます。
ただし、個人的には、ミックス アンド マッチングではなく、制約をすべて使用することをお勧めします。ビジュアル形式を使用すると、サイズと位置を非常に簡単に指定できます。