我正在以编程方式将UIButton添加到我的视图中,我希望按钮中的字体大小会自动调整大小(例如,如果文本很长,请调整为较小的字体以适合按钮)。
此代码无效(字体始终相同):
myButton = [UIButton buttonWithType: UIButtonTypeRoundedRect];
[myButton setTitle:[NSString stringWithFormat:@"hello"] forState:UIControlStateNormal];
[myButton setFrame: CGRectMake(0, 0, 180, 80)];
[myButton.titleLabel setFont: [UIFont boldSystemFontOfSize:16.0]];
myButton.titleLabel.adjustsFontSizeToFitWidth = TRUE;
[theView addSubview:myButton];
答案 0 :(得分:40)
代码有效,但可能不是你想要的方式。如果文本不适合{向下adjustsFontSizeToFitWidth
),minimumFontSize
属性只会减小字体大小。它永远不会增加字体大小。在这种情况下,16pt“hello”将很容易放入180pt宽按钮,因此不会进行调整大小。如果你想要增加字体以适应可用空间,你应该将它增加到一个很大的数字,这样它就会减少到适合的最大尺寸。
只是为了展示它目前是如何工作的,这是一个很好的人为例子(点击按钮减小宽度,看到字体缩小到minimumFontSize
):
- (void)viewDidLoad {
[super viewDidLoad];
UIButton *myButton = [UIButton buttonWithType: UIButtonTypeRoundedRect];
[myButton setTitle:[NSString stringWithFormat:@"hello"] forState:UIControlStateNormal];
[myButton setFrame: CGRectMake(10, 10, 300, 120)];
[myButton.titleLabel setFont: [UIFont boldSystemFontOfSize:100.0]];
myButton.titleLabel.adjustsFontSizeToFitWidth = YES;
myButton.titleLabel.minimumFontSize = 40;
[myButton addTarget:self action:@selector(buttonTap:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:myButton];
}
- (void)buttonTap:(UIButton *)button {
button.frame = CGRectInset(button.frame, 10, 0);
}