線に沿ってドットをマッピングしたいと思います。
線の長さはデバイスと向きによって異なり、常に画面全体に伸びます。したがって、相対パーセンテージ値を使用してドットを配置するのが最も理にかなっています。
これまでのところ、ある種のポイント値(Doc)で定義されている制約しか見つかりませんでした
パーセンテージ値も制約として使用できますか? これらのドットをスケーラブルな方法で配置する方法に関するアイデアはありますか...または、この変換/配置を「手動で」行う必要がありますか?
線に沿ってドットをマッピングしたいと思います。
線の長さはデバイスと向きによって異なり、常に画面全体に伸びます。したがって、相対パーセンテージ値を使用してドットを配置するのが最も理にかなっています。
これまでのところ、ある種のポイント値(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 を配置しています (info タイプは dark と light)。私はそれらを IB に追加し、ビューの左側にある制約に IBOutlets を作成しました (これはシステムが私に与えたもので、右側にあった可能性があります。とにかくそれらを削除するだけなので問題ありません)。コードでドットを作成している場合は、これを行う必要はありません)。コードでは、これらの制約を削除してから、ボタンの中心を画面全体の 50% と 90% に配置する新しい制約を追加します。
私は自動レイアウトの専門家ではありません (またはまだ有能です!) が、XCode 6 の時点で、IB でこれを行うことができるようです。
サイズ インスペクターを表示します (ルーラーをクリックします)。
制約の四角形をダブルクリックします (よくわかりません! [編集] をクリックすると別の場所に移動します)。