0

非常简单(我希望)的自动布局问题,我正在用头撞我的 iMac。

我有这个肖像

在此处输入图像描述

这就是风景中发生的事情。

在此处输入图像描述

我想要的只是让标签像不使用自动布局时那样展开。我要添加什么约束来均匀地间隔它们?

4

4 回答 4

2

有一个比@sust86 更简单、更灵活的解决方案:

  1. 引入充当标签之间弹簧的空视图。
  2. 连接所有具有恒定距离约束的相邻视图。
  3. 将一个新的弹簧视图与具有相等宽度约束的所有其他弹簧视图连接起来。
  4. 删除任何不需要的约束。

对我来说,约束看起来类似于:

在此处输入图像描述

这种配置的优点是,当标签(在我的例子中是按钮)的宽度发生变化时,您不需要修复任何间距。

于 2013-04-09T19:40:50.137 回答
1

在 iOS 6 中使用新的约束是很棘手的。在 ray 的网站上有一个很好的 2 部分教程,与 iOS 6 中的自动布局相关。虽然它解释了如何在自动布局中锚定图像持有者,但这些原则帮助我理解了整个自动布局。希望这对你也有帮助。这里是链接: http ://www.raywenderlich.com/20881/beginning-auto-layout-part-1-of-2 Adrian

于 2012-10-25T21:43:01.560 回答
1

试试这个:

#define moneyLabelWidth 20
@property (nonatomic, strong) UILabel* moneyOneLabel;
@property (nonatomic, strong) UILabel* moneyTwoLabel;
@property (nonatomic, strong) UILabel* moneyThreeLabel;
@property (nonatomic, strong) UILabel* moneyFourLabel;
@property (nonatomic, strong) UILabel* moneyFiveLabel;
@property (nonatomic, strong) UILabel* moneySixLabel;
...
[self.view addSubview:moneyOneLabe];
[self.view addSubview:moneyTwoLabe];

moneyOneLabel.translatesAutoresizingMaskIntoConstraints = NO;
moneyTwoLabel.translatesAutoresizingMaskIntoConstraints = NO
etc
...


[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[_moneyOneLabel(moneyLabelWidth)]-[_moneyTwoLabel(moneyLabelWidth)]-[_moneyThreeLabel(moneyLabelWidth)]-[_moneyFourLabel(moneyLabelWidth)]-[_moneyFiveLabel(moneyLabelWidth)]-[_moneySixLabel(moneyLabelWidth)]-|"
                                                                  options:0
                                                                  metrics:@{@"moneyLabelWidth":@(moneyLabelWidth)}
                                                                    views:NSDictionaryOfVariableBindings(_moneyOneLabel, _moneyTwoLabel, _moneyThreeLabel, _moneyFourLabel, _moneyFiveLabel, moneySixLabel)]];
/*add vertical constraints*/

上面的 constrainsWithVisualFormat 基本上说从左边缘到右边缘水平绘制 6 个货币标签,宽度均为 20,它们之间的宽度是可变的。我还没有运行此代码,但我认为它会起作用(或至少接近)。

于 2013-01-24T05:41:54.750 回答
1

最简单的方法是在每个视图之间使用2 个约束。一个大于或等于,一个小于或等于。最小尺寸(Greater Then 或 Equal)应该是纵向模式下的间距。最大尺寸(小于或等于)应该是横向模式下的间距。

这与我为这个问题提供的解决方案相同:

使用自动布局在调整大小时平等地改变空间

于 2013-01-25T10:11:48.883 回答