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

Posted

技术标签:

【中文标题】将等宽乘数添加到没有超级视图的.xib 组件?【英文标题】:Adding Equal Width Multiplier to .xib component with no super view? 【发布时间】:2018-09-02 05:58:11 【问题描述】:

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

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

问题

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

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

【问题讨论】:

【参考方案1】:

您可以使用 UIView method didMoveToSuperview() 来获取超级视图。每当超级视图更改时都会调用它。 例如:

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

然后你可以通过编程设置宽度约束,因为你有一个与之相关的超级视图。

【讨论】:

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

使用自动布局的 xib 添加为子视图时不显示

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

根据尺寸等级更改约束的乘数

iOS - 图像视网膜模糊

将两个 xib 文件中的两个 tableviews 添加到主 xib 视图

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