我上传了自定义字体,并使用以下代码将此字体应用于UI按钮的标题
videoButton.titleLabel.font = [UIFont fontWithName:@"LaurenScript" size:20];
问题是标题被剪裁在第一个字母的顶部(见下图)。我尝试在UIlabel上使用相同的字体,它工作正常,所以它不是字体的问题。我还尝试使用
更改rectFrame[videoButton.titleLabel setFrame:CGRectMake(0, 0, 300, 600)];
但是没有做任何事情。 有谁知道如何解决这个问题? 干杯
答案 0 :(得分:42)
我有一个类似的问题,在标题标签的顶部切断了分音符。 我创建了一个UIButton子类并使用此代码来解决问题:
-(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;
}
答案 1 :(得分:25)
答案 2 :(得分:9)
不确定这对任何人来说是否仍然存在问题,但我发现(使用自定义字体)上述解决方案并未最终解决问题,尤其是对于仅通过编程方式创建的自定义UIButton
。
以下是我设法解决此问题的方法,特别是1行解决了剪辑问题:
UIButton *button = [[UIButton alloc] init];
button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setTitle:@"Nice!" forState:UIControlStateNormal];
[button setFont:[UIFont fontWithName:<CUSTOM FONT NAME> size:buttonWidth/3.0f]];
button = CGRectMake(0, 0, <WIDTH>, <HEIGHT>);
以下是解决裁剪的行:
[button setContentVerticalAlignment:UIControlContentVerticalAlignmentFill];
希望这可以帮助任何仍然被卡住的人。快乐的编码!
答案 3 :(得分:4)
我在swift 2.1中尝试这个,我从Antoine回答中调整了这段代码。这可能不是很好的代码,但它现在解决了我的问题。你应该为自己做得更好。
import UIKit
class CustomUIButton: UIButton {
override func layoutSubviews() {
if var titleFrame : CGRect = titleLabel?.frame{
titleFrame.size = self.bounds.size
titleFrame.origin = CGPointZero
self.titleLabel!.frame = titleFrame
self.titleLabel!.textAlignment = .Center
}
}
}
答案 4 :(得分:3)
有这个(悲伤的)解决方案:https://stackoverflow.com/a/10200908/352628
我有类似的问题。似乎标题标签只是非常无法控制,为了获得控制权,你需要在按钮上注入一个UILabel子视图......这让我很伤心:(
答案 5 :(得分:0)
使用带有图像的按钮和带有自定义字体的文本时遇到同样的问题。 一切都必须垂直对齐。并且图像没有拉伸。 这对我来说很好。
btn.contentVerticalAlignment = .fill
btn.contentMode = .center
btn.imageView?.contentMode = .scaleAspectFit