UI按钮标题上的自定义字体被剪切在单词之上

时间:2012-11-05 04:05:17

标签: ios objective-c uibutton

我上传了自定义字体,并使用以下代码将此字体应用于UI按钮的标题

videoButton.titleLabel.font = [UIFont fontWithName:@"LaurenScript" size:20];

问题是标题被剪裁在第一个字母的顶部(见下图)。我尝试在UIlabel上使用相同的字体,它工作正常,所以它不是字体的问题。我还尝试使用

更改rectFrame
[videoButton.titleLabel setFrame:CGRectMake(0, 0, 300, 600)];

但是没有做任何事情。 有谁知道如何解决这个问题? 干杯

enter image description here

6 个答案:

答案 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)

在“界面”构建器中选择按钮并检查控件部分中的设置垂直对齐面板下面是示例:

enter image description here

答案 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