【问题标题】:custom font on UIbutton title clipped on top of wordUIbutton标题上的自定义字体夹在单词的顶部
【发布时间】:2012-10-24 21:56:29
【问题描述】:

我已上传自定义字体并使用以下代码将此字体应用于 UIbutton 的标题

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

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

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

但这并没有做任何事情。 有人知道我该如何解决这个问题吗? 干杯

【问题讨论】:

    标签: ios objective-c uibutton


    【解决方案1】:

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

    【讨论】:

    • 这应该是最佳答案。
    • UITabBarItems 裁剪自定义字体时遇到了同样的问题。 layoutSubviews 不可用于 UITabBarItems 上的子类,有人知道解决方法吗?
    • 如果您仍然面临使用自定义字体进行文本剪辑的问题,请查看我的答案 - 也可以应用于 UITabBarItem
    【解决方案2】:

    在界面生成器中选择按钮并检查在控制部分中设置垂直对齐面板下面是示例:

    【讨论】:

    • 迄今为止我对这个问题的最佳答案!
    • 这似乎相当于 labelName.contentVerticalAlignment = .fill 也有效
    【解决方案3】:

    不确定这是否仍然是任何人的问题,但我发现(使用自定义字体)上述解决方案并没有最终解决问题,特别是对于仅以编程方式创建的自定义 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];
    

    希望这可以帮助其他仍然被卡住的人。编码愉快!

    【讨论】:

    • 你为我节省了一个小时!谢谢
    • 非常适合我!这应该被接受为最佳答案!
    【解决方案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
            }
        }
    }
    

    【讨论】:

      【解决方案5】:

      在使用带有自定义字体的图像和文本的按钮时遇到了同样的问题。 一切都必须垂直居中对齐。并且图像没有被拉伸。 这对我来说很好。

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

      【讨论】:

        【解决方案6】:

        有这个(悲伤的)解决方案:https://stackoverflow.com/a/10200908/352628

        我也有类似的问题。似乎 titleLabel 非常不可控,要获得控制,您需要将 UILabel 子视图注入按钮...这让我很难过 :(

        【讨论】:

        • 是的,这就是我最终做的:(
        猜你喜欢
        • 2011-05-13
        • 2013-08-06
        • 2012-11-29
        • 2021-03-12
        • 1970-01-01
        • 2012-12-19
        • 1970-01-01
        • 1970-01-01
        • 2017-07-31
        相关资源
        最近更新 更多