1

我有一张图片要作为背景图片添加到 uibutton。我想拉伸图像以适合按钮宽度。用户将在运行时输入按钮的标题。因此,根据用户输入的文本宽度,它将拉伸图像。超出按钮的某个宽度,按钮将不会进一步拉伸,而是会截断文本。这是我的代码

CGSize suggestedSize = [self.strButtonTitle sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE]];

NSLog(@"Widht:- %f",suggestedSize.width);

UIButton *customButton = [UIButton buttonWithType:UIButtonTypeCustom];
customButton.frame = CGRectMake(50, 200, 75, 40);

CGRect frame = customButton.frame;
frame.size.width = suggestedSize.width;

if (frame.size.width > 75) {
    frame.size.width = 75;
    customButton.frame = frame;
}
else {
    frame.size.width +=5;
    customButton.frame = frame;
}

NSLog(@"Custom button width:- %f",customButton.frame.size.width);

UIImage *buttonImageNormal = [UIImage imageNamed:BUTTON_IMAGE];
UIImage *stretchableButtonImageNormal = [buttonImageNormal stretchableImageWithLeftCapWidth:12 topCapHeight:0];

[customButton setBackgroundImage:stretchableButtonImageNormal forState:UIControlStateNormal];
[customButton setTitle:self.strButtonTitle forState:UIControlStateNormal];
[customButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[self.view addSubview:customButton];

UIBarButtonItem *barButton = [[UIBarButtonItem alloc]initWithCustomView:customButton];
self.navigationItem.leftBarButtonItem = barButton;
[barButton release];

我的问题是,按钮宽度不会根据用户输入的文本增加。如果用户输入 ppppp,宽度不会增加到 75,而是显示“pp...p”

非常感谢任何帮助。谢谢。

4

1 回答 1

2

问题在于测量字符串的宽度。您正在通过以下方式测量字符串的宽度。

CGSize suggestedSize = [self.strButtonTitle sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE]];

在这里,您使用大小为 FONT_SIZE 的 systemFont。

但是,您没有为您的 customButton 文本标签设置相同的字体。可以通过以下方式完成。

[customButton.titleLabel setFont:[UIFont systemFontOfSize:FONT_SIZE]];

希望它会有所帮助。

于 2012-06-06T10:14:06.737 回答