将等宽度乘数添加到.xib组件而没有超级视图?

问题描述 投票:2回答:1

为了澄清这个问题,我需要解决以下几个方面

  1. 我正在按照这篇文章创建可重用的按钮组件,它本质上只是一个带有标签和用户操作的图像视图,它基于.xib and cocoa class files
  2. 我也跟着这个auto layout practice根据屏幕宽度调整一些元素的大小

问题

我希望我的按钮组件的宽度为0.4等于屏幕的宽度,问题是它没有超大视图,我可以对抗它,即当我将它包含在某些视图控制器中时它只有一个。由于此选项,自动布局中的“Equal Width”对我禁用。作为一种解决方法,我可以将其包含在一些视图中,但这会损害组件的可重用性,我宁愿它默认占用其超级视图的0.4等宽。

有关如何实现这一目标的任何建议?

ios xcode autolayout
1个回答
2
投票

您可以使用UIView method didMoveToSuperview()来获取超级视图。只要superview发生变化,就会调用它。例如:

override func didMoveToSuperview() {
    super.didMoveToSuperview()
    guard let currentSuperview = self.superview else { return }
}

然后,您可以以编程方式设置宽度约束,因为您有要查看的超级视图。

© www.soinside.com 2019 - 2024. All rights reserved.