gpt4 book ai didi

ios - 在 View 中创建对中心标签的约束

转载 作者:行者123 更新时间:2023-11-28 20:00:59 25 4
gpt4 key购买 nike

我正在尝试以编程方式设置一些约束。我有一个容器 View UIView,它包含三个 subview 。

UIView - circleView
UILabel - 标签 1
UILabel - 标签 2

圆 View 显示在容器顶部 (0,0,width,80)。 label1 显示在带有 5.0 填充的 circleview 下方。

我现在正尝试将 label2 添加到 circleView 的中心。如何以编程方式使用 AutoLayout 执行此操作。

这就是我目前所做的。

NSDictionary *views = NSDictionaryOfVariableBindings(circleView,labelView, iconLbl);

[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[circleView(circleSize)]|" options:0 metrics:metrics views:views]];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[labelView]|" options:0 metrics:metrics views:views]];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[circleView(circleSize)]-(padding)-[labelView]-|" options:0 metrics:metrics views:views]];

label2是字典中的iconLbl View 。

最佳答案

这应该相对简单——它有助于使用 xib 查看您实际需要多少约束才能获得您想要的效果。将一个标签约束在另一个 View 的中心,这两个 View 都在一个parentView中,只需要2个约束就可以完全约束。如果这是一个常规的 UIView,则需要 4 个约束(x、y、宽度、高度),但标签会根据其内容自动确定它的宽度和高度,因此它不会产生歧义。这当然是在你其他 View 都被适当约束的情况下,但你只询问了 circle View 中的 label2。

我更喜欢使用非可视形式来定义约束,因为它们读起来像数学方程式。你想要的是:

label2.centerX = circleView.centerX*1 + 0;

label2.centerY = circleView.centerY*1 + 0;

由于这些是具有共同父级的兄弟,因此将约束添加到 parentView。所以你得到以下两个约束。

[parentView addConstraint:[NSLayoutConstraint constraintWithItem:label2  attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:circleView attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0.0]];

[parentView addConstraint:[NSLayoutConstraint constraintWithItem:label2 attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:circleView attribute:NSLayoutAttributeCenterY multiplier:1.0 constant:0.0]];

这足以使 label2 在 parentView 中居中。您遇到的任何问题都可能是由于未正确指定您的 View 之间的其他约束。

关于ios - 在 View 中创建对中心标签的约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24071484/

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