在UIView中心添加UILabel

时间:2016-12-25 21:12:45

标签: ios swift xcode uiview

我的UICollectionView创建了一些自定义UIViews(称为NumberViews)

每个NumberView都有一个属性var text: UILabel!,它是一个标签,应该在NumberView的中间生成。

我的工作是:

  1. 我在UIViewController

  2. 中创建了NumberViews
  3. 我在NumberViews

  4. 中创建标签

    (1)工作得很好,但(2)没有。它在NumberView之外的某个奇怪的地方创建标签。

    对于(2),我在NumberView的初始化中执行此操作:

    var text: UILabel!
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        self.text = UILabel(frame: frame)
        self.text.textAlignment = NSTextAlignment.center
        self.text.text = "testing"
        self.addSubview(self.text)
    }
    

    发生的事情是这样的:

                   ______________    _
                  |              |    \
                  |     ______   |    |
     NumberView --|--> |      |  |    |
                  |    |______|  |    |
                  |              |    |
          Label --|----> testing |     > ViewController
                  |              |    |
                  |              |    |
                  |              |    |
                  |              |    |
                  |______________|   _/
    

    如何将标签移动到NumberView的中间?

1 个答案:

答案 0 :(得分:0)

您需要在numberView中添加布局锚点,将其设置为center.x和center.y,使其等于标签。

我现在不在我的Mac上,但你应该能够搜索代码来创建中心布局锚点。

快速搜索了这个网站:

http://useyourloaf.com/blog/pain-free-constraints-with-layout-anchors/

你想创建一个centerXAnchor和一个centerYAnchor