ios 自定义字体的UI按钮标题剪辑在字的顶部

6ju8rftf  于 2023-03-20  发布在  iOS
关注(0)|答案(7)|浏览(168)

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

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

问题是标题被剪切在第一个字母的顶部(见下图)。我在UIBalabel上尝试了相同的字体,效果很好,所以不是字体的问题。我还尝试使用

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

但这并没有起到任何作用。有人知道我如何解决这个问题吗?干杯

8cdiaqws

8cdiaqws1#

我也遇到过类似的问题,titlelabel上面的分音符被切断了。我创建了一个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;
}
hpxqektj

hpxqektj2#

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

jaxagkaj

jaxagkaj3#

不确定这对任何人来说是否仍然是一个问题,但我发现(使用自定义字体)上述解决方案并没有最终解决这个问题,特别是对于仅通过编程创建的自定义UIButton
下面是我如何设法解决这个问题,特别是有一行解决了裁剪问题:

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];

希望这能帮助其他仍然被困的人。编码快乐!

vojdkbi0

vojdkbi04#

我也有同样的问题,使用一个按钮的图像和文本与自定义字体。一切都必须对齐垂直居中。和图像没有拉伸。这对我来说很好。

btn.contentVerticalAlignment = .fill
btn.contentMode = .center
btn.imageView?.contentMode = .scaleAspectFit
ecfsfe2w

ecfsfe2w5#

我在swift2.1中尝试了这个,我从Antoine answer中改编了这个代码。这可能不是很好的代码,但它现在解决了我的问题。你应该让它更适合你自己。

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
        }
    }
}
8hhllhi2

8hhllhi26#

有这样一个(可悲的)解决方案:https://stackoverflow.com/a/10200908/352628
我也有类似的问题。看起来titleLabel只是非常不可控,而要获得控制权你需要向按钮注入一个UILabel子视图...这让我很伤心:(

tct7dpnv

tct7dpnv7#

在我的例子中,按钮标题标签是垂直对齐的,但是文本需要在顶部插入。
自定义内容边缘插入= UI边缘插入(顶部:5.0,左侧:0.0,底部:0.0,右侧:0.0)

相关问题