UIButton + 斜体字体 = 剪裁
Posted
技术标签:
【中文标题】UIButton + 斜体字体 = 剪裁【英文标题】:UIButton + italic font = clipping 【发布时间】:2011-10-01 06:04:48 【问题描述】:问题是当我使用像 Helvetica Oblique 这样大小大于 13 的斜体字体时,UIButton 会剪辑标题尾部(最后大约 1-2 个像素)。有人知道这个问题的解决方案吗?
【问题讨论】:
将换行模式设置为除尾截断以外的其他内容。 按钮够大吗?!如果你 在 设置文本和字体之前调用 sizeToFit,这是行不通的。 请提供更多详细信息,但我认为您的情况是“无论您制作的按钮有多宽,任何文本在制作成斜体时都会被剪辑在 UIButton 中” - 如果是这种情况,我不会不知道解决方法,这是一个错误,报告它 展示问题的图片也会有所帮助。 这是一个非常古老的问题。我相信它已经过时了。致@bshirley - 是的,不管按钮有多宽。 【参考方案1】:子类 UIButton
类并覆盖 setTitle 为:
- (void)setTitle:(NSString *)title forState:(UIControlState)state
[super setTitle:[NSString stringWithFormat:@" %@ ", title] forState:state];
这将在文本的两侧添加额外的空格。 简单易行。
【讨论】:
好主意。一种更简单的方法是在标准 UIButton 的标题前后放置一个空格。 很抱歉,但这不是一个真正的解决方案,充其量只是一种解决方法,并且在标题中填充空格以解决布局/绘图问题可能会在未来困扰您。【参考方案2】:我的脚本字体有这个问题。不幸的是,没有一种简单的方法可以解决它。我尝试了一切,然后最终继承了 UIButton。您可以在此处阅读实现的详细信息:http://blog.tinymission.com/post/subclassing-uibutton
基本上,最简单的做法是将您自己的 UILabel 放在 UIButton 之上,但对我来说,这不会很好,所以我将 UIButton 子类化。
【讨论】:
【参考方案3】:你可以通过设置 Uibutton 属性来设置斜体字体
button.titleLabel?.font = UIFont.italicSystemFont(ofSize: 17)
【讨论】:
【参考方案4】:-
创建
UIButton
的自定义子类
覆盖方法:- (CGRect)titleRectForContentRect:(CGRect)contentRect
例子:
- (CGRect)titleRectForContentRect:(CGRect)contentRect
CGFloat textX = 0;
CGFloat textY = 0;
CGFloat textW = self.width;
CGFloat textH = contentRect.size.height;
return CGRectMake(textX, textY, textW, textH);
【讨论】:
以上是关于UIButton + 斜体字体 = 剪裁的主要内容,如果未能解决你的问题,请参考以下文章