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议你首先尽可能简单的设置你的布局约束。