UIButton标签文本autoshrink与插页

我正在使用自动布局。 我有一个固定的高度和宽度的UIButton和背景图像(圆angular正方形)。 它显示可变长度的文本string(在1到30个字之间,比方说)。

我想根据string长度使文本自动缩进,并在我的button中最多有3行文本。 所以我这样做了:

[button.titleLabel setMinimumScaleFactor:0.01]; [button.titleLabel setAdjustsFontSizeToFitWidth: YES]; [button.titleLabel setNumberOfLines:3]; [button.titleLabel setTextAlignment:NSTextAlignmentCenter]; 

我也在Interface Builder中将字体大小设置为50, 我将换行符设置为“剪辑”。

button的文本正确适应字符的数量,但它往往超出button的框架。 它为中等长度的string,但不是巨大的string,我不知道为什么。 我试图添加insets到我的button,但它没有太大的作用,只是移动了过大的文字,所以我认为字体调整是在插入之前计算的。

下面的截图。 这些button中有4个,包含在较大的蓝色视图内。 红色背景是button的背景,黄色是用作背景的图像。

截图

我在Google云端硬盘上上传了一个示例项目。 使用iPhone 6 Plus进行模拟。

你也应该设置你的button的titleEdgeInsets属性。

例如:

 button.titleEdgeInsets = UIEdgeInsetsMake(2.0, 2.0, 2.0, 2.0); 

在你的项目中,似乎有一些与button标题标签混淆的布局约束。

添加以下约束时,它将起作用。

 UILabel *titleLabel = button.titleLabel; NSDictionary *views = NSDictionaryOfVariableBindings(titleLabel); [button addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[titleLabel]|" options:kNilOptions metrics:nil views:views]]; 

在使用这个解决scheme之前,我build议你首先尽可能简单的设置你的布局约束。