将视图的CenterX约束为超级视图的总宽度的一部分

沙利文

我想将子视图的中心限制为超级视图总宽度的1/6。

例如:

如果Superview的宽度= 6

子视图的CenterX = 1

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

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

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

尼科罗特科夫

我有两个想法可能会导致崩溃:

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

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

更新:

方法名称是

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

您的代码中relatedBy:部分在哪里?

更新2:

看来这毕竟是不允许的。我试图重现崩溃,并记录以下错误:

布局属性配对无效

但!如果将超级视图的左侧连接到屏幕,则可以使用“尾随”而不是“宽度”来获得所需的布局,它实际上具有相同的值(请参见图像以更好地理解)。

在此处输入图片说明

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

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];

确保将约束添加到要定位的视图的超级视图。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何指定间距约束作为超级视图尺寸的一部分?

如何将视图控制器呈现为视图的一部分?

sql如何将增量显示为总增量的一部分

角度不更新视图的一部分

如何使用CoordinatorLayout将视图作为RecyclerView的一部分移动

如何将 TextureView 作为视图的一部分加载

用部分视图更新asp.net MVc 4视图的一部分

是否可以仅将视图控制器的一部分嵌入容器视图中?

约束优化,其中约束被计算为目标函数的一部分

如何在Swift 4中将GMSMapView添加到视图的一部分

表格视图向上滚动时,表格视图第一部分(部分0)未向上移动

动态约束,将按钮粘贴到图像的一部分

如何设置文本视图的一部分是可单击的

根据表列中的值隐藏或显示视图的一部分

单滚动的全页视图移动到下一部分

使用方程式作为视图创建的一部分

如何在React Native中弄脏视图的一部分?

Android:如何用动画显示视图的一部分?

我如何在React Native中剪切视图的一部分

如何仅绘制视图背景的一部分

对齐作为 VStack 一部分的水平视图

选择数据框的一部分以获取视图,而不是副本

如何从“列表”视图中分割字段的一部分– Django Rest Framework

使用PHP变量加载视图的一部分

在Android中显示列表视图的活动的一部分

如何使用 ag:select 标记的 onChange 事件动态更改视图的一部分?

为什么以前的SwiftUI视图的一部分显示在新创建的视图上

如何仅使视图的一部分(在运行时添加)覆盖/重叠相邻视图?

将视图的一部分保存为材料?(Unity3D)