ボタンの垂直方向の配置をIBで設定する方法を知っています。 こちら を参照してください。しかし、プログラムでそれを行うことはできません...これは私が試したことの1つです。
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(10, 10, 110, 130)];
[button setTitle:@"Align" forState:UIControlStateNormal];
button.backgroundColor = [UIColor whiteColor];
button.titleLabel.textColor = [UIColor grayColor];
[button setContentVerticalAlignment:UIControlContentVerticalAlignmentBottom];
[self.view addSubview:button];
[button release];
私もインセットを試しました...
ただし、配置は変更されません。
ボタンのCustomStyleを保持したいことに注意してください(デフォルトのルックアンドフィールは必要ありません)。
問題は使用でした
button.titleLabel.textColor = [UIColor grayColor];
の代わりに
[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
私のコードのどこかで、テキストの垂直方向の配置にまだ問題がありますが、基本的な例を持っているので、もっと見れば、より複雑なバージョンを取得できるはずです。たぶん、button.titleLabel.textColorのように、垂直方向の配置を機能させない他の方法があるでしょう...
更新元の問題は、実際にはボタンが短すぎる(ボタンの高さ)ためでした。
Word husband
はボタンにあり、現在は下に垂直に配置されています。しかし、ボタンの高さは十分ではないため、明確ではありません。タイトルのインセットとコンテンツのインセットのデフォルトはゼロですが、タイトルを下に揃えることはできないようです。私には約5ピクセルのように見えます。これが正しいことを確認するために、より小さいフォントでテストしました。
残念ながら、テキストを上に垂直に配置しても、何も変更されないようです...
次の方法で、ボタンのテキストを(水平および垂直に)整列できます。
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 200, 70)];
button.backgroundColor = [UIColor whiteColor];
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
button.contentVerticalAlignment = UIControlContentVerticalAlignmentBottom;
[button setTitle:@"Align" forState:UIControlStateNormal];
[self.container addSubview:button];
contentVerticalAlignment
はその方法です。ボタンを作成する方法かもしれません。これを試して:
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(10, 10, 110, 130);
// rest of your code
// don't release button explicitly
UIButtonの内部テキストラベルを簡単に操作できます。ここでそれを行う方法:
私は私のために働くより良い方法を見つけました。私はカスタムフォントを使用しているため、上記の lindon fox's の回答のように、配置が少しずれています。
UIButtonサブクラスの内部:
- (void)layoutSubviews {
[super layoutSubviews];
if (UIEdgeInsetsEqualToEdgeInsets(UIEdgeInsetsZero, self.titleEdgeInsets)) {
// adjust top, left bottom, and right to fit your needs
self.titleEdgeInsets = UIEdgeInsetsMake(top, left, bottom, right);
}
}
contentVerticalAlignment
をUIControlContentVerticalAlignmentCenter
に設定することも良いアイデアであるという他の回答にも同意します。