ラインに沿ってドットをマッピングしたいのですが。
行の長さはデバイスと方向によって異なり、常に画面全体に拡大されます。そのため、positionドットを相対パーセンテージ値。
これまでのところ、ある種のポイント値で定義されている制約のみが見つかりました( Doc )
パーセント値も制約として使用できますか?これらのドットをスケーラブルな方法で配置する方法についてのアイデア...またはこの変換/配置を「手動で」行う必要がありますか?
はい、ドットをビューの幅の一部として配置できます。 NSLayoutConstraintメソッドconstraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:には、スーパービューとそのサブビューの間の分数関係を使用できる乗数パラメーターがあります。スーパービューの右端はそのビュー(全幅ビューの場合は画面)の幅になるため、以下のような制約を作成すると、点は線に沿ってわずかな距離に配置されます。
-(void)viewDidLoad {
[super viewDidLoad];
[self.view removeConstraint:self.leftConDark];
[self.view removeConstraint:self.leftConLight];
NSLayoutConstraint *lcd = [NSLayoutConstraint constraintWithItem:self.darkButton
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeRight
multiplier:.5
constant:0];
NSLayoutConstraint *lcl = [NSLayoutConstraint constraintWithItem:self.lightButton
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeRight
multiplier:.9
constant:0];
[self.view addConstraints:@[lcd,lcl]];
}
この例では、2つのUIButton(情報タイプdarkおよびlight)を配置しています。私はそれらをIBに追加し、ビューの左側にあるそれらの制約にIBOutletsを作成しました(システムが私に与えたものであり、右側にある可能性があります-とにかく削除するだけなので問題ではありません)コードでドットを作成する場合は、これを行う必要はありません)。コードでこれらの制約を削除してから、ボタンの中央を画面全体の50%と90%に配置する新しい制約を追加します。
私は自動レイアウトのエキスパートではありません(まだ有能です!)が、XCode 6以降では、IBでこれを実行できるようです。
サイズインスペクターを表示する(ルーラーをクリック)
制約の長方形をダブルクリックします(明確ではありません!「編集」で別の場所に移動します)