【问题标题】:Smart caption by UILabel or UITextViewUILabel 或 UITextView 的智能字幕
【发布时间】:2015-06-06 09:12:52
【问题描述】:

我想像 SoundCloud 应用一样创建智能字幕。 见下面的附件,

这两个标题: - •平底锅• - 德国柏林

是我想要创建的。

这些字幕似乎是由 sizeToFit 或 sizeThatFits 执行的。但是,如果将 sizeThatFits 与背景颜色一起使用(通过 NSBackgroundColorAttributeName),您将不会在第一个字母之前和最后一个字母之后以及顶部和底部填充都获得填充。 标题将按照这些字母的精确尺寸进行组织。

无论如何,我想做的是与附件图片完全相同的标题。

干杯,

【问题讨论】:

    标签: objective-c uitextfield uilabel uitextview sizetofit


    【解决方案1】:

    这里有两种方法。一种是在调用sizeThatFits 之后添加一些填充。另一种是在标签标题前添加空格。

    不过,添加填充的正确方法是扩展 UILabel 并在您的子类上覆盖方法 textRectForBounds:limitedToNumberOfLines:。在那里,只需在 super 上调用相同的方法,传递您收到的 bounds,只是更小。

    【讨论】:

    • 感谢您的建议。我将尝试根据您的流程进行测试。如果工作会告诉你!如果您不介意,可以与我分享一个示例代码的 sn-p 吗?
    【解决方案2】:

    我知道这是一个老问题,但我一直在寻找 SoundCloud 在其标签上的相同效果。 这是 uilabel 的子类

        import UIKit
    
        class LabelPine: UILabel {
    
    override func drawTextInRect(rect: CGRect) {
        let insets = UIEdgeInsets.init(top: 5, left: 0, bottom: 5, right: 3)
        super.drawTextInRect(UIEdgeInsetsInsetRect(rect, insets))
    }
    
    override func textRectForBounds(bounds: CGRect, limitedToNumberOfLines numberOfLines: Int) -> CGRect {
        super.textRectForBounds(bounds, limitedToNumberOfLines: 0)
    
        return CGRectInset(self.attributedText!.boundingRectWithSize(CGSizeMake(999, 999), options: .UsesLineFragmentOrigin, context: nil), -5, -5)
    
    
    
    
        }
    }
    

    这是各个类的实现:

       labelNombre = LabelPine()
        labelNombre?.text = nombreUser
        labelNombre?.frame = CGRectMake(10, nombrePos.Yo, nombrePos.ancho, nombrePos.alto)
        labelNombre?.font = UIFont(name:"Hiragino Sans W3",size: 19)!
        labelNombre?.textAlignment = .Left
        labelNombre?.backgroundColor = UIColor(white: 1, alpha: 0.5)
        labelNombre?.textColor = colorBlentUIColor
        labelNombre?.sizeToFit()
    
        header?.addSubview(labelNombre!)
    

    注意我调用了 sizeToFit()。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多