1. ホーム
  2. ios

[解決済み] iOSの場合。テキストの長さに応じたUIButtonのリサイズ

2022-05-13 12:52:33

質問

インターフェイスビルダで コマンド + = は、テキストに合うようにボタンのサイズを変更します。私は、ボタンがビューに追加される前に、これをプログラムで行うことが可能であるかどうか疑問に思っていました。

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button.titleLabel setFont:[UIFont fontWithName:@"Arial-BoldMT" size:12]];
[button addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside];
// I need to know the width needed to accomodate NSStringVariable
[button setTitle:NSStringVariable forState:UIControlStateNormal]; 
// So that I can set the width property of the button before addSubview
[button setFrame:CGRectMake(10, 0, width, fixedHeight)];
[subNavigation addSubview:button];

どのように解決するのですか?

Xcode 4.5以降では、'strong'を使用することで、これを行うことができるようになりました。 オートレイアウト/コンストレイント '.

主な利点は、以下の通りです。

  1. プログラムでフレームを設定する必要が全くない!
  2. 正しく行えば、向きが変わってもフレームをリセットすることに悩まされることはありません。
  3. また、デバイスの変更に悩まされることもありません(異なるスクリーンサイズのために別々にコーディングする必要がないことを読んでください)。

いくつかの欠点があります。

  1. 後方互換性がない - iOS 6 以降でのみ動作します。
  2. 慣れる必要があります (ただし、後で時間を節約できます)。

最もクールなことは、次のようなインテントを宣言することに集中できるようになることです。

  • これら 2 つのボタンの幅を同じにしたい。
  • このビューを垂直方向に中央に配置し、スーパー ビューの端から最大 10 pts の範囲に拡張する必要があります; または。
  • このボタン/ラベルが、表示しているラベルに応じてサイズ変更されるようにしたい!

ここで は、自動レイアウトを導入するための簡単なチュートリアルです。

に対して 詳細 .

最初は時間がかかりますが、確かに努力する価値はありそうです。