我想沿着一条线映射点。
线条长度取决于设备和方向,并始终在整个屏幕上拉伸。因此,使用相对百分比值定位对我来说最有意义。
到目前为止,我只发现约束是在某种点值(Doc)
中定义的是否可以使用百分比值作为约束?关于如何以可扩展的方式定位这些点的任何想法......或者我是否需要“手动”进行这种转换/定位?
答案 0 :(得分:46)
是的,您可以将点定位为视图宽度的一小部分。 NSLayoutConstraint方法constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:,具有乘数参数,允许您使用superview及其子视图之间的小数关系。 superview的右边缘将是该视图的宽度(如果是全宽视图,则为屏幕),因此如果您创建如下所示的约束,则点将位于沿线的小数距离处:
-(void)viewDidLoad {
[super viewDidLoad];
[self.view removeConstraint:self.leftConDark];
[self.view removeConstraint:self.leftConLight];
NSLayoutConstraint *lcd = [NSLayoutConstraint constraintWithItem:self.darkButton
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeRight
multiplier:.5
constant:0];
NSLayoutConstraint *lcl = [NSLayoutConstraint constraintWithItem:self.lightButton
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeRight
multiplier:.9
constant:0];
[self.view addConstraints:@[lcd,lcl]];
}
在这个例子中,我定位了两个UIButton(信息类型暗和亮)。我在IB中添加了它们,并将IBOutlets设置为它们对视图左侧的约束(这就是系统给我的,它本来可以到右侧 - 因为你只是删除了它们并不重要如果你在代码中制作点,你就不需要这样做了。在代码中我删除了那些约束,然后添加新的约束,将按钮的中心放在屏幕的50%和90%处。
答案 1 :(得分:12)
我不是自动布局专家(甚至还不称职!)但是从XCode 6开始,你似乎能够在IB中做到这一点。
显示尺寸检查器(点击标尺)
双击约束矩形(不明显!"编辑"带你去其他地方)