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

时间:2018-09-02 05:58:11

标签: ios xcode autolayout

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

  1. 我正在关注这篇文章,以创建可重复使用的按钮组件,其本质上只是一个基于.xib and cocoa class files
  2. 的带有标签和用户操作的图像视图
  3. 我也遵循此auto layout practice来根据屏幕宽度调整我的某些元素的大小

问题

我希望按钮组件的宽度等于屏幕的0.4,但问题是它没有可缩放的超级视图,即当我将其包含在某些视图控制器中时仅具有一个超级视图。由于此选项,我无法使用自动布局中的“等宽”。解决方法是,一旦将其包含到某个视图中,便可以调整其大小,但这会损害组件的可重用性,我宁愿默认情况下它占据其父视图的0.4相等宽度。

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

1 个答案:

答案 0 :(得分:2)

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

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

然后,您可以通过编程方式设置宽度约束,因为您要关联一个超级视图。