UIButton,自动布局和获取按钮的高度

Posted

技术标签:

【中文标题】UIButton,自动布局和获取按钮的高度【英文标题】:UIButton, Autolayout and getting the height of the button 【发布时间】:2016-01-06 15:50:06 【问题描述】:

我正在尝试获取自定义 UIButton 的真实高度。但我总是得到一个比我预期的要小得多的值。我得到了大约 30 的结果,但预计大约是 45。

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

这是我的代码,但在运行时自动布局会以某种方式改变大小,这是完美的,但我无法设置正确的cornerRadius(总是太小)。所以也许我需要乘数或类似的东西。我已经通过添加 top 和 bottom 的 contentEdgeInsets 进行测试,但没有任何区别。

谢谢 托比亚斯

【问题讨论】:

【参考方案1】:

视图尚未在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

【讨论】:

【参考方案2】:

在打印尺寸之前尝试调用 self.layoutIfNeeded()

【讨论】:

也许你在父视图中调用 layoutIfNeeded()

以上是关于UIButton,自动布局和获取按钮的高度的主要内容,如果未能解决你的问题,请参考以下文章

iOS 8.0.2 和 iPhone plus 当我在 XIB 中设置 UIButton backgroundImage 时,UIButton 变得更大,尽管这个按钮具有高度和重量的自动布局

在滚动视图中具有相同宽度和高度的三个 UIButton 上的自动布局

调整 UIButton 宽度/高度 (iOS) - 如何在不禁用自动布局的情况下解决?

UIViews 的高度与屏幕的高度成比例(自动布局)

UIButton 被自动布局拉伸

具有自动布局的水平放置等宽等水平空间按钮