UILabel位置与预期不同

时间:2014-11-17 13:06:55

标签: ios iphone swift ios8 uilabel

我开始涉足swift并遇到一种奇怪的行为,并想知道是否有人可以阐明原因。我试图将UILabel添加到UIView并将其放置在UIView的中心。从理论上讲,这可以通过以下方式实现。

    self.titleContainer = UIView(frame: CGRect(x: self.view.bounds.origin.x, y: self.view.bounds.origin.y
        + 20.0, width: self.view.bounds.width, height: (self.view.bounds.height * cSixth) - 20.0))
    self.titleContainer.backgroundColor = UIColor.blackColor()
    self.view.addSubview(titleContainer)

    self.titleLabel = UILabel()
    self.titleLabel.text = "Naughts and Crosses"
    self.titleLabel.textColor = UIColor.whiteColor()
    self.titleLabel.font = UIFont(name: "Helvetica", size: 10)
    self.titleLabel.sizeToFit()
    self.titleLabel.center = titleContainer.center
    titleContainer.addSubview(self.titleLabel)
然而,这似乎没有占据上边界。但是下一个代码块工作并将标签放在中心位置。

    self.titleContainer = UIView(frame: CGRect(x: self.view.bounds.origin.x, y: self.view.bounds.origin.y
                + 20.0, width: self.view.bounds.width, height: (self.view.bounds.height * cSixth) - 20.0))
    self.titleContainer.backgroundColor = UIColor.blackColor()
    self.view.addSubview(titleContainer)

    self.titleLabel = UILabel()
    self.titleLabel.text = "Naughts and Crosses"
    self.titleLabel.textColor = UIColor.whiteColor()
    self.titleLabel.font = UIFont(name: "Helvetica", size: 10)
    self.titleLabel.sizeToFit()
    self.titleLabel.center = CGPointMake(titleContainer.bounds.midX, titleContainer.bounds.midY)
    titleContainer.addSubview(self.titleLabel)

有什么想法吗?

由于 艾力

1 个答案:

答案 0 :(得分:0)

我认为你正在混合坐标系。 self.titleLabel.centertitleContainer内的一个点,titleContainer.center[titleContainer superview]内的一个点。

差异在 View Programming Guide - >中解释。 视图和窗口架构 - > 查看几何和坐标系 - > 框架,边界和中心属性的关系