【问题标题】:UIButton with Constraints showing Center (500,500)具有显示中心的约束的 UIButton (500,500)
【发布时间】:2017-04-24 01:36:39
【问题描述】:

我在 Storyboard 中创建了一个带有一些约束的 UIButton,将它链接到一个类,当我尝试打印按钮的中心坐标时,无论按钮位于何处,它都会打印 (500.0,500.0)。有人可以解释为什么会发生这种情况(我很确定这是因为限制,但我没有解释)。

【问题讨论】:

  • 你能告诉我们这些限制吗?在 Size Inspector 中为您的 UIButton 截屏列表
  • 你在哪里打印中心?如果它是在视图获得初始布局传递之前,那么它是没有意义的。
  • 你是用frame(相对于superview)还是bounds(相对于它自己)?
  • @dan 我做的第一件事是在 viewDidLoad 中打印中心。我相信你是对的,我添加了另一个按钮,按下时打印第一个按钮的中心并打印正确的坐标。感谢您将我推向正确的方向!
  • @dan 要了解更多信息,您建议将此打印声明放置在按钮中心的什么位置?例如,如果我希望我的程序做的第一件事也是唯一一件事是在它运行时自动打印按钮的中心。而不是 viewDidLoad,也许是 viewDidAppear?

标签: ios uibutton constraints coordinates uistoryboard


【解决方案1】:

在 viewDidLayoutSubviewMethod 中添加打印语句。在这种方法中,确认所有视图都已布局。

由于在 viewDidLoad 中没有布置视图,因此您得到的输出不正确。

如果您需要更清楚地了解这一点,请访问苹果参考:https://developer.apple.com/reference/uikit/uiviewcontroller/1621398-viewdidlayoutsubviews

【讨论】:

  • 另外,如果他真的想在那里计算按钮布局,他可以使用layoutIfNeeded 方法强制中间布局。
  • 我认为这太过分了:P
  • 实际上更简单,因为viewDidLayoutSubviews 被调用了多次,viewDidLoad 只被调用了一次,但这取决于程序员。
猜你喜欢
  • 2018-03-01
  • 2017-11-04
  • 1970-01-01
  • 1970-01-01
  • 2014-01-24
  • 1970-01-01
  • 2018-05-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多