【问题标题】:Can I set ascender or descender for System UIFont?我可以为系统 UIFont 设置升序或降序吗?
【发布时间】:2014-11-21 08:02:14
【问题描述】:

我正在使用 UILabel 使用以下代码创建警报徽章:

    [label setText:@"67"];
    UIFont * font = [UIFont systemFontOfSize:11];
    [label setFont:font];
    [label sizeToFit];

    [label setTextAlignment:NSTextAlignmentCenter];
    [label setBackgroundColor:[UIColor yellowColor]];
    [label setTextColor:[UIColor whiteColor]];
    label.layer.cornerRadius = label.frame.size.height/2;

一切都很好,但文本的垂直对齐不正确。它更接近顶部边缘。如何在 UILabel 的垂直中心对齐文本?

我阅读了 UIFont 的上升和下降属性,我可以使用它们来对齐 UILabel 垂直中心的文本吗?

【问题讨论】:

    标签: ios objective-c uilabel uifont


    【解决方案1】:

    您可以使用属性字符串而不是普通的NSString 作为标签文本(因此使用attributedText 属性而不是text),并使用NSBaselineOffsetAttributeName 属性described here at Apple

    【讨论】:

      【解决方案2】:

      另一种解决方案是将UILabel 子类化,以便为标签添加边距,因此您可以定义自定义“上边距”来补偿基线偏移。

      this question查看实现细节。

      【讨论】:

      • 它有更多的控件。很高兴知道这一点。
      【解决方案3】:

      要垂直对齐 UILabel 的文本,请使用 -

      myLabel.numberOfLines = 0;
      [myLabel sizeToFit];
      

      详细答案查看This SO Answer

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-02
        • 1970-01-01
        • 1970-01-01
        • 2014-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多