2009-11-11 81 views
0

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

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

+0

是它的工作? – Francescu 2009-11-24 13:21:39

回答

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您的标签。

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;
相关问题