当前位置:  开发笔记 > IOS > 正文

文字底部+中心UILabel iOS Swift

如何解决《文字底部+中心UILabeliOSSwift》经验,为你挑选了1个好方法。

我使用Swift创建了一个iOS应用程序.现在我有一个问题,我想让我的文本中心+底部在一个标签中,中心+顶部在另一个标签中.有可能吗?

我试过这个

//Here learnItem is my label.
     let constraintSize: CGSize = CGSizeMake(learnItem.frame.size.width, CGFloat(MAXFLOAT))
     let textRect: CGRect = learnItem.text!.boundingRectWithSize(constraintSize, options: .UsesLineFragmentOrigin, attributes: [NSFontAttributeName: learnItem.font], context: nil)
            learnItem.drawRect(textRect);

它不会影响任何事情.所以也许这是一个wromg代码.我也看到了

learnItem.textAlignment = .Center

有选择权center, justified, left, natural, right.但这不是我想要的.

请有人帮助我如何使我的文本中心+底部和中心+顶部



1> Sviatoslav Y..:

为此,您应该覆盖drawTextInRect方法.

// MARK: - BottomAlignedLabel

@IBDesignable class BottomAlignedLabel: UILabel {

    // MARK: Lifecycle

    override init(frame: CGRect) {
        super.init(frame: frame)
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

    override func drawText(in rect: CGRect) {

        guard text != nil else {
            return super.drawText(in: rect)
        }

        let height = self.sizeThatFits(rect.size).height
        let y = rect.origin.y + rect.height - height
        super.drawText(in: CGRect(x: 0, y: y, width: rect.width, height: height))
    }
}

对于顶部对齐y应该是0.

如果您使用的是故事板,那么使用此代码的最简单方法就是在故事板中更改标签.

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有