0

相互に関連して配置する必要がある2つのボタンがあります。

ここに画像の説明を入力してください

ボタンの内容と幅はさまざまなので、ストーリーボードでボタンを並べて配置することはできません。ストーリーボードで末尾または先頭のスペースを使用して、スーパービューの代わりにリレーションを他のボタンにすることはできますか?

4

3 に答える 3

1

なぜストーリーボードでこれを行っているのか不思議です。Xib のこのカスタムが必要な場合は、個別の「テスト」プロジェクトを作成して、ビューだけを作成することをお勧めします。私はソフトウェア エンジニアリングの観点からそれを強くお勧めしますが、もう一度、どのようなプロダクション レベルのプロジェクトでも、最初はストーリー ボードを作成しないことを学生に勧めます。チーム開発ツールとして分類されます。さて、私の独善的な暴言を終わらせます。

問題を正しく理解している場合、問題を解決するために考えられる方法が 3 つあります。問題:

  • 最下層がスクロール ビューであるビューがあり、その上に UIButton である 2 つのサブビューがあります。
  • ボタンのサイズはコンテンツによって異なります (テキスト/フォントの変更、および可能性のある画像を想定していますか?)。
  • ボタンのサイズはさまざまですが、ボタンを一貫した方法で並べて表示したいと考えています。
  • 複数のオリエンテーションと可能な複数のイディオムをサポートしたいと考えています。

解決策の提案: 1. 問題の複雑な性質のため、私の最初の提案はおそらく少し面白くないように思えるでしょう。プログラムでビューを作成し、相対幾何学​​的数学を使用してすべての問題を解決できます。困難に思えるかもしれませんが、情報が更新されるとコントローラーがビューを管理するカスタムビューコントローラーを作成することで、最もクリーンで簡単な方法になると思います適切に表示するには、これの利点は、相対幾何学​​が本当に得意な場合、コードがイディオムを超えて機能することです。

  1. スプリングとストラットを使ってそれを解決し、考えられるあらゆる方法でテストしますが、これはジオメトリ ベースのアプローチの数学的な証明にはなりません。より高いレベルのソリューションでは、制御が保証されないため、なぜ質問するのでしょうか。ただし、これを設定するときは、相対的なサイズ変更と配置を強調してください。

  2. これは無駄で不要であり、パフォーマンスを大幅に低下させますが、コンピューターサイエンスの先輩に提出してもらいました.

ほぼすべての状況に対応するビューを作成し、それらの間で非常に複雑なコントローラー スイッチを使用します。これに関するパフォーマンス コストは膨大であり、誰かが一貫性のない画面への手段を見つける可能性は非常に高いです。

于 2012-11-19T16:38:55.233 に答える
1

IB で行うのは非常に簡単です。両方のボタンを選択し、ウィンドウの右下隅にある制約ボタン (H のように見えるボタン) から「水平間隔」オプションを追加するだけです。

于 2012-11-19T16:35:37.810 に答える
0

提案のみを使用してクラスで使用できます

.h で

UIButton *firstButton;
UIButton *secondButton; 

メートルで

最初のボタンの場合:

firstButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
firstButton.frame = CGRectMake(100, 100, 150, 60);//this can be changed at run time
[firstButton setTitle:@"TAP1" forState:UIControlStateNormal];
[firstButton addTarget:self action:@selector(someMethod1)
 forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:firstButton]; 

2 番目のボタンの場合:

  secondButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
      secondButton.frame = CGRectMake(firstButton.frame.origin.x+10,    
       firstButton.frame.origin.y+10 , firstButton.frame.size.width,  
       firstButton.frame.size.height);

  [secondButton setTitle:@"TAP2" forState:UIControlStateNormal];
  [secondButton addTarget:self action:@selector(someMethod2)
  forControlEvents:UIControlEventTouchUpInside];
  [self.view addSubview:secondButton];

上記の 10 以外の必要に応じて、独自のパディング値を設定できます。firstButton の幅が変更されるたびに、

      secondButton.frame = CGRectMake(firstButton.frame.origin.x+10,    
       firstButton.frame.origin.y+10 , firstButton.frame.size.width,  
       firstButton.frame.size.height);

両方が整列します。私はこれが役立つと思います

于 2012-11-19T16:30:33.110 に答える