UIButton没有显示完整的标题?

时间:2015-12-05 04:52:15

标签: ios objective-c uibutton

Iam动态生成UIButton,当我设置标题名称时没有空格正确显示。 例如:

NSString *myString=[[array valueForKey:@"optionName"] objectAtIndex:i];
NSLog(@"%@",myString); // myString=SampleTitle
[button setTitle:myString forState:UIControlStateNormal];

当我用空格设置名称时,它会自动修剪UIButton标题。 例如:

NSString *myString=[[array valueForKey:@"optionName"] objectAtIndex:i];
NSLog(@"%@",myString); // myString=SampleTitle Test
[button setTitle:myString forState:UIControlStateNormal];

它显示如下

enter image description here

我可以删除这个修剪部分吗?我需要正确显示所有角色。

我的UIButton大小是根据标题

计算的
[button setTitle:myString forState:UIControlStateNormal];
        CGSize stringsize = [@"Prolonged inspiration" sizeWithFont:[UIFont systemFontOfSize:14]];
        //or whatever font you're using
        [button setFrame:CGRectMake(x,y,stringsize.width+30,stringsize.height+20)];

2 个答案:

答案 0 :(得分:1)

问题的最可能原因是您使用可能与按钮字体不同的字体计算文本的大小。将计算基于按钮的字体以及按钮的文本。

CGSize stringsize = [myString sizeWithFont:button.titleLabel.font];

作为旁注,在iOS 7.0中不推荐使用sizeWithFont:方法。除非您也支持iOS 6,否则您应该使用正确的替换方法替换该方法。

答案 1 :(得分:0)

尝试iOS 7.0以上的iOS版本

CGSize textSize = { widthValue, CGFLOAT_MAX };            
CGRect frame = [text boundingRectWithSize:textSize
                                      options:NSStringDrawingUsesLineFragmentOrigin
                                   attributes:@{ NSFontAttributeName:font }
                                      context:nil];
        size = CGSizeMake(frame.size.width, frame.size.height+1);