Ios UIButton未自动调整字体大小

Ios UIButton未自动调整字体大小,ios,objective-c,fonts,uibutton,Ios,Objective C,Fonts,Uibutton,我正在以编程方式将UIButton添加到我的视图中,我希望将该字体大小添加到按钮中,并自动调整其大小(例如,如果文本较长,请调整为较小的字体以适合该按钮) 此代码不起作用(字体始终相同): 代码可以工作,但可能不是您想要的方式。adjustsFontSizeToFitWidth属性仅在文本不适合时才减小字体大小(减至最小字体大小)。它永远不会增加字体大小。在这种情况下,一个16磅的“hello”将很容易地安装在180磅宽的按钮中,因此不会发生大小调整。如果希望字体增加以适应可用空间,则应将其增加

我正在以编程方式将UIButton添加到我的视图中,我希望将该字体大小添加到按钮中,并自动调整其大小(例如,如果文本较长,请调整为较小的字体以适合该按钮)

此代码不起作用(字体始终相同):


代码可以工作,但可能不是您想要的方式。
adjustsFontSizeToFitWidth
属性仅在文本不适合时才减小字体大小(减至
最小字体大小
)。它永远不会增加字体大小。在这种情况下,一个16磅的“hello”将很容易地安装在180磅宽的按钮中,因此不会发生大小调整。如果希望字体增加以适应可用空间,则应将其增加到一个较大的数字,以便将其减小到适合的最大大小

为了展示它当前的工作方式,这里有一个很好的设计示例(单击按钮以缩小其宽度,如图所示,字体缩小为
最小字体大小
):

-(void)viewDidLoad{
[超级视图下载];
UIButton*myButton=[UIButton Button类型:UIButtonyPeroundRect];
[myButton setTitle:[NSString stringWithFormat:@“hello”]用于状态:UIControlStateNormal];
[myButton setFrame:CGRectMake(10,10,300,120)];
[myButton.titleLabel setFont:[UIFont boldSystemFontOfSize:100.0]];
myButton.titleLabel.adjustsFontSizeToFitWidth=是;
myButton.titleLabel.minimumFontSize=40;
[myButton addTarget:self action:@selector(buttonTap:)for ControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:myButton];
}
-(无效)按钮映射:(UIButton*)按钮{
button.frame=CGRectInset(button.frame,10,0);
}

看看这是怎么做的,然后尝试调用按钮标题标签上的
sizeToFit
方法。您想要什么行为?你想让文本展开以适应按钮,你想让按钮缩小以适应文本,还是想让文本缩小,而不是在大到适合时被剪裁?Ander,你的代码工作得很有魅力,非常感谢!!!我仍然存在的唯一问题是,更改按钮(文本)的内容时,它会在按钮内部将自身重新定位到上方或下方,而不是保持居中。似乎起始位置也会受到初始字体大小的影响,即使稍后会进行调整。我已经尝试设置ContentVerticalAlignment:uicontrol ContentVerticalAlignment中心,但它似乎没有任何作用。代码可以工作。。!!我想更新::使用“minimumScaleFactor”而不是“minimumFontSize”,因为它已被弃用。因此,我们可以将最小字体大小设置为->myButton.titleLabel.minimumScaleFactor=0.4;(40 / 100). 谢谢…:)谢谢你的回答-我正在寻找一种方法来在脚本中创建的UIButtons上实现这一点,在脚本中它为UILabel而不是UIButton设置了此项。这确实如预期的那样工作-是的,应该使用
minimumScaleFactor
。如果选择UIButton,然后查看identity inspector,则可以在情节提要中设置值。在“用户定义的运行时属性”下,输入要修改的键路径、类型和值。在本例中:titleLabelFontSizeToFitWidth,Boolean,Yes;titleLabel.minimumScaleFactor,数字,0.2。工作起来很有魅力,无需添加代码。
myButton = [UIButton buttonWithType: UIButtonTypeRoundedRect];
[myButton setTitle:[NSString stringWithFormat:@"hello"] forState:UIControlStateNormal];
[myButton setFrame: CGRectMake(0, 0, 180, 80)];
[myButton.titleLabel setFont: [UIFont boldSystemFontOfSize:16.0]];

myButton.titleLabel.adjustsFontSizeToFitWidth = TRUE;

[theView addSubview:myButton];