根据iOS 5中的文本长度,拉伸图像以适合按钮

时间:2012-06-06 09:51:54

标签: ios image uibutton width

我想将一个图像作为背景图像添加到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”

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

1 个答案:

答案 0 :(得分:2)

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

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

这里使用的是systemFont,其大小为FONT_SIZE。

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

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

希望它会有所帮助。