38

線に沿ってドットをマッピングしたいと思います。

画面を横切る線

線の長さはデバイスと向きによって異なり、常に画面全体に伸びます。したがって、相対パーセンテージ値を使用してドットを配置するのが最も理にかなっています。

これまでのところ、ある種のポイント値(Doc)で定義されている制約しか見つかりませんでした

パーセンテージ値も制約として使用できますか? これらのドットをスケーラブルな方法で配置する方法に関するアイデアはありますか...または、この変換/配置を「手動で」行う必要がありますか?

4

2 に答える 2

52

はい、ビューの幅の一部としてドットを配置できます。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% に配置する新しい制約を追加します。

于 2013-07-07T03:56:13.780 に答える
13

私は自動レイアウトの専門家ではありません (またはまだ有能です!) が、XCode 6 の時点で、IB でこれを行うことができるようです。

  1. オブジェクトを選択します。
  2. サイズ インスペクターを表示します (ルーラーをクリックします)。サイズインスペクター

  3. 制約の四角形をダブルクリックします (よくわかりません! [編集] をクリックすると別の場所に移動します)。

拘束長方形

  1. ここでは、上記の回答と同じように乗数を設定できます。

ここに画像の説明を入力

于 2014-10-05T22:21:34.783 に答える