我为UIButton的标题使用自定义字体。它的作品,除了这个特殊的字体,第一个字符的一部分被裁剪。例如:裁剪后的UIButton标题
我尝试设置contentEdgeInsets和titleEdgeInsets似乎并不能得到它不会被截断。我也尝试将button.titleLabel.clipsToBounds属性设置为NO;
任何建议将不胜感激。
我为UIButton的标题使用自定义字体。它的作品,除了这个特殊的字体,第一个字符的一部分被裁剪。例如:裁剪后的UIButton标题
我尝试设置contentEdgeInsets和titleEdgeInsets似乎并不能得到它不会被截断。我也尝试将button.titleLabel.clipsToBounds属性设置为NO;
任何建议将不胜感激。
所以我刚刚结束了设置UIButton标题为零,并将我自己的UILabel作为子视图添加到UIButton。我将UILabel框架设置为与按钮相同的尺寸,并将其设置为居中。
不是我确定的最优雅的解决方案,但它完成了工作。
它看起来像我的喜欢你的内容是funkily调整。如果标签的框架不能直接访问,请使用[button setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];
来尝试修复水平对齐问题。
居然是它被设置为中心。如果我将其设置为正确的理由,它仍然是裁剪。 – 2012-04-17 23:02:37
虽然杰斯华的解决方案工作正常,但它不是我眼中的最佳选择。 我宁愿推荐子类UIButton并覆盖它的layoutSubviews
方法。以上答案
-(void)layoutSubviews
{
[super layoutSubviews];
CGRect frame = self.titleLabel.frame;
frame.size.height = self.bounds.size.height;
frame.origin.y = self.titleEdgeInsets.top;
self.titleLabel.frame = frame;
}
这很容易做到,只需创建一个类(UIButton的子类),复制粘贴,分配给按钮的自定义类。谢谢! – 2014-11-19 19:24:15
这应该是被接受的答案。简单而优雅。 – 2015-05-05 08:06:40
完美谢谢 – 2015-06-24 09:34:47
斯威夫特代码:
override func layoutSubviews() {
super.layoutSubviews()
titleLabel?.frame = CGRect(x: bounds.origin.x, y: titleEdgeInsets.top, width: frame.width, height: bounds.size.height)
}
这真的很糟糕,这是唯一的解决方案。发生这种情况的原因是,字体设计师故意将其字母的边界编码为小于实际值,以便它们将嵌套。这对于斜体和草书字体尤其重要。我希望苹果公司在计算UIButton标签的宽度时不会那么“精确”,或者至少让我们自己去改变它。我正在提交一份错误报告,你也应该。 – Bek 2013-03-07 18:26:20