将UIView的大小调整为其UILabel子视图的大小

时间:2017-04-15 19:38:03

标签: ios swift uiview

我想创建一个看起来像这样的UIView:

The label "Tag" inside a rounded rectangle.

我希望此视图始终将其自身调整为其中的文本。我试过这样的事情:

import UIKit

@IBDesignable class TagView: UIView {

    @IBInspectable var tagTitle: String?

    override func awakeFromNib() {
        super.awakeFromNib()

        setUpView()
    }

    func setUpView() {
        let label = UILabel()
        label.text = tagTitle
        addSubview(label)

        layer.cornerRadius = 15
        frame = CGRect(origin: frame.origin, size: sizeThatFits(label.frame.size))
    }

}

但这根本不会改变视图的frame。我认为原因是启用了自动布局。

我能做些什么来达到这个效果?我是从错误的角度来看待这个吗?

2 个答案:

答案 0 :(得分:0)

尝试使用setUpView()方法的代码

 func setUpView() {
     let label = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 21))
     label.center = CGPoint(x: 160, y: 285)
     label.text = tagTitle
     label.layer.masksToBounds = true
     label.layer.cornerRadius = 15
     self.view.addSubview(label)

        }

答案 1 :(得分:0)

尝试将视图的宽度约束添加到与标签相等的宽度。同样适用于身高。