1

画像とタイトル付きの UIButton が必要です。を使用してテキストを表示し-setTitleEdgeInsetsました。

しかし、ボタンのタイトルは動的でなければならないため、試行錯誤を使用して適切な位置を取得したくありません。UIButtons titleLabel オブジェクトのサイズと位置を特定し、それに対応する titleEdgeInsets を次のコードで設定しようとしました。

[myButton setTitleEdgeInsets:UIEdgeInsetsMake(myButton.center.y - (myButton.titleLabel.bounds.size.height / 2),
                             - (myButton.center.x - (myButton.titleLabel.bounds.size.width / 2)),
                             myButton.center.y + (myButton.titleLabel.bounds.size.height / 2),
                             myButton.center.x + (myButton.titleLabel.bounds.size.width / 2))];

ここで何かを見逃したり、誤用したりしていますか?

よろしくお願いします - ジュリアン

4

1 に答える 1

1

ボタンは、ラベルと画像のサブビューを管理する方法に少し苦労する可能性があります-それはあなたに多くの制御を与えません。これは、ボタンの状態が変化するたびに(またはさらに頻繁に)これらの値が更新されるため、パラメーターを手動で設定した場合、設定が失われるためです。これが、次のような方法を使用する必要がある理由ですsetTitleEdgeInsets:-あなたは正しい方向に進んでいます。:)

注意事項:

  • の使用myButton.centerはおそらく正しくありません。これが親ビューのボタンの中心になります。ここではボタンサイズの半分を使用することをお勧めします。
  • コードが呼び出されたときに、ボタンがまだサブビューレイアウトを行っていないため、のフレーム/境界をまだ設定していない場合がありtitleLabelます。

layoutSubviewsボタンやsizeToFitラベルを呼び出すことができます。ただし、実際にはの不透明な実装の詳細に翻弄されているUIButtonため、テキスト/ラベルのサイズを(のsizeWithFont:*メソッドの1つを使用してNSString)計算し、上端と左端の挿入図を次のように設定するのが最適な場合があります。テキストを配置します。

于 2012-06-17T21:11:03.997 に答える