24

我正在以编程方式将 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];
4

1 回答 1

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);
}
于 2012-08-31T01:15:32.360 回答