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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将等宽度乘数添加到.xib组件而没有超级视图?相关的知识,希望对你有一定的参考价值。

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

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

问题

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

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

答案

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

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

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

以上是关于将等宽度乘数添加到.xib组件而没有超级视图?的主要内容,如果未能解决你的问题,请参考以下文章

@IBDesignable , NSLayoutConstraint 用于超级视图的比例乘数宽度?

如何在 xib 文件中使用子视图和超级视图之间的纵横比?

如何将间距约束指定为超级视图大小的比例?

如何使 xib 子视图与 Swift 中的超级视图交互?

将 xib 文件中的视图添加到 UITableViewCell 添加约束

如何将 UIScrollView 添加到基于 xib 的视图中