2014-11-17 29 views
2

我开始尝试了一下,发现了一个奇怪的行为,并想知道是否有人可以阐明原因。我试图添加一个UILabel到一个UIView并将其放置在UIView的中心。理论上这可以通过以下来实现。UILabel位置与预期不同

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) 

任何想法?

感谢 亚历克

回答

0

我认为你是混合坐标系。 self.titleLabel.centertitleContainer里面的一个点,titleContainer.center[titleContainer superview]里面的一个点。 >查看和窗口架构 - -

的差异在View Programming Guide解释>视图几何和坐标系 - >框架,边界的关系,和中心物业

+0

感谢您的回复。我想让标签坐在'[titleContainer superview]'的中心点,这样肯定有效吗?我道歉我真的没有看到区别? – NinjaArekku

+0

我添加了一个试图解释差异的链接。 – Mats