【问题标题】:Resize a UIView to the size of its UILabel subview将 UIView 调整为其 UILabel 子视图的大小
【发布时间】:2017-04-15 19:38:02
【问题描述】:

我想创建一个如下所示的 UIView:

我希望此视图始终根据其中的文本调整自身大小。我尝试过这样的事情:

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。我认为原因是启用了自动布局。

我可以做些什么来达到这个效果?我是不是从错误的角度来处理这个问题?

【问题讨论】:

    标签: ios swift uiview


    【解决方案1】:

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

    【讨论】:

    • 当我这样做并同时使用translatesAutoresizingMaskIntoConstraints = false 时,它有点工作,但它不再保留它在屏幕上的位置,它被定位到 (0, 0)。跨度>
    • 同时添加垂直和水平约束
    【解决方案2】:

    试试这个代码的 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)
    
            }
    

    【讨论】:

    • 不幸的是,这不起作用。我什至再也看不到UILabel了。
    猜你喜欢
    • 2014-09-02
    • 2013-04-12
    • 1970-01-01
    • 2012-08-28
    • 2013-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    相关资源
    最近更新 更多