2016-01-06 61 views
0

我想要得到我的自定义UIButton的真正高度。但我总是得到比我预期的更小的价值。我得到大约30个的东西,但预计一些关于45UIButton,Autolayout并获得按钮的高度

override func awakeFromNib() { 
    print(self.frame.height) 
    self.layer.cornerRadius = self.layout.frame.height/2.0 
    self.clipsToBounds = true 
    self.titleLabel?.adjustsFontSizeToFitWidth = true 
} 

这是我的代码,但在运行时莫名其妙的自动版式改变大小,这是完美的,但我不能设置正确的cornerRadius(总是太小)。所以也许我需要乘数或类似的东西。我已经尝试添加顶部和底部的contentEdgeInsets,但它没有任何区别。

感谢 托比亚斯

回答

4

的观点并没有在awakeFromNib()奠定了规模之前。当布局确保已经发生时设置你的角落半径。

对于一个观点:

override func layoutSubviews() { 
    super.layoutSubviews() 
    layer.cornerRadius = frame.height/2.0 
} 

对于一个UIViewController:

override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews() 
    view.layer.cornerRadius = view.frame.height/2.0 
} 
+1

调用layoutIfNeeded()!谢谢! – Tobias

0

尝试调用self.layoutIfNeeded()打印

+0

没什么区别... – Tobias

+0

也许,如果你在这工作完全父视图 – juanjo