gpt4 book ai didi

ios - 将 View 的 CenterX 限制为父 View 总宽度的一部分

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:00:29 24 4
gpt4 key购买 nike

我想将 subview 的中心限制在父 View 总宽度的 1/6。

例如:

如果父 View 的宽度 = 6

subview 的 CenterX = 1

我在 superview 类(self)中写了以下代码来约束 aSubview 的 centerX,它崩溃了:

// Hits here 
[NSLayoutConstraint constraintWithItem:self.aSubview
attribute:NSLayoutAttributeCenterX
toItem:self
attribute:NSLayoutAttributeWidth
multiplier:1/6
constant:0];
// Crashes here

有没有办法用 NSLayoutConstraints 做到这一点?

最佳答案

我有两个想法为什么这可能会崩溃:

1) 在这种情况下,self 是什么?您确定它是 UIView 的子类吗?

2) 1/6 应为 0,这不是有效的乘数。试试 1.0/6

更新:

方法名是

+ constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:

代码中的 relateBy: 部分在哪里?

更新 2:

看来终究是不允许的。我试图重现崩溃,但它记录了以下错误:

Invalid pairing of layout attributes

但是!您可以使用 Trailing 而不是 Width 来实现所需的布局,如果 superview 的左侧连接到屏幕,它实际上具有相同的值(参见图像以更好地理解)。

enter image description here

这已经过测试并且可以正常工作:

NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:self.aView
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeTrailing
multiplier:1.0/2
constant:0];

[self.view addConstraint:constraint];

请务必将您的约束添加到您要定位的 View 的父 View 中。

关于ios - 将 View 的 CenterX 限制为父 View 总宽度的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31389137/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com