UIButton要调整大小

时间:2009-11-11 09:32:58

标签: iphone objective-c uibutton

我在我的应用程序中使用了UIButton。此按钮标题根据用户选择动态显示。现在我必须根据标题内容调整按钮宽度。 我正在计算字符串长度并将其分配给按钮的宽度。

按钮按标题调整大小,但问题如下, 1.如果首先显示具有大内容的标题,则在此之后如果显示具有小内容的标题意味着该按钮被覆盖则不会删除先前构造的值。 2.看起来好像一个按钮重叠在另一个按钮上。

2 个答案:

答案 0 :(得分:2)

假设您的班级中有属性按钮

-(void)changeTitleButtonWithValue:(NSString *)value
{
//get the value length (- (CGSize)sizeWithFont:(UIFont *)font)
size = [value sizeWithFont:yourFont];
self.button.frame = CGRectMake(x, y, size.width,size.height);
[self.button setTitle:value forState:UIControlStateNormal];
[self.button setTitle:value forState:UIControlStateHighlighted];

}

编辑:您可以通过多种方式获取按钮

  • 您是从Interface Builder创建的
    • 将其添加为插座
    • 使用UIButton设置标签和getIt * myButton =(UIButton *)[self.view viewForTag:YOURTAG];
  • 您可以从代码创建它
    • 实例属性
    • 与标签相同,但在您创建时:myButton.tag = YOURTAG;

答案 1 :(得分:0)

对我来说,听起来你没有改变按钮的宽度,但是你要添加另一个按钮。你在代码中添加按钮吗?如果你这样做,你可以发布代码吗?

一般情况下,如果你想添加另一个按钮,最好给它一个标签,然后在添加新标签之前从超级视图中删除带有该标签的视图(即旧按钮)。

这看起来应该是这样的(从头到尾):

UIButton * button = [[[UIButton alloc] init] autorelease];
button.tag = 100;
/* ...set up the button the way you would normally do... */

// remove old button
[[targetView viewWithTag: 100] removeFromSuperview];

// add new button
[targetView addSubview: button];

标记是用于标识视图的任意整数。最好#define在中心位置{{1}}使用过的标签。