Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为没有超级视图的.xib组件添加等宽乘数?_Ios_Xcode_Autolayout - Fatal编程技术网

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

Ios 为没有超级视图的.xib组件添加等宽乘数?,ios,xcode,autolayout,Ios,Xcode,Autolayout,为了澄清这个问题,我需要解决以下几个方面 我将在本文之后创建可重用的按钮组件,它本质上只是一个启用了标签和用户操作的图像视图 我还根据屏幕宽度来调整一些元素的大小 问题 我想我的按钮组件是0.4等宽的屏幕,问题是它没有一个超级视图,我可以根据它的大小,也就是说,它只有一个,当我把它包括到某些视图控制器。由于此选项,自动布局中的“等宽”对我是禁用的。作为一种解决方法,我可以在将其包含到某个视图中后调整其大小,但这会损害组件的可重用性,我宁愿它在默认情况下占据其超级视图的0.4倍宽度 关于如何实现这

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

  • 我将在本文之后创建可重用的按钮组件,它本质上只是一个启用了标签和用户操作的图像视图
  • 我还根据屏幕宽度来调整一些元素的大小
  • 问题

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

    关于如何实现这一点有什么建议吗?

    您可以使用UIView
    didMoveToSuperview()
    来获取superview。每当superview更改时,就会调用它。 例如:

    override func didMoveToSuperview() {
        super.didMoveToSuperview()
        guard let currentSuperview = self.superview else { return }
    }
    
    然后可以通过编程方式设置宽度约束,因为您有一个要关联的superview