NSLayoutRelationConstraint 到视觉格式约束
NSLayoutRelationConstraint to Visual format constraint
我正在尝试将关系约束转换为视觉格式。子视图与父视图的宽度和高度相同。
这是我的代码:
[parentView addConstraint:[NSLayoutConstraint
constraintWithItem:childView
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:parentView
attribute:NSLayoutAttributeHeight
multiplier:1.0
constant:0]];
[parentView addConstraint:[NSLayoutConstraint
constraintWithItem:childView
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:parentView
attribute:NSLayoutAttributeWidth
multiplier:1.0
constant:0]];
如何将其转换为视觉格式?
我建议向 stroyboard 添加约束,在视图控制器中创建出口并在需要时更新常量。
根据不同的屏幕尺寸(4、5s、6、6 Plus 等)动态管理和更改将很容易
您可以使用两种视觉格式字符串来做到这一点,一种是水平的,一种是垂直的:
NSDictionary* views = NSDictionaryOfVariableBindings(parentView, childView);
NSArray* horzConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:[childView(==parentView)]" options:0 metrics:nil views:views];
NSArray* vertConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[childView(==parentView)]" options:0 metrics:nil views:views];
严格来说,这符合您显示的限制条件。它使子项具有与父项相同的大小,但不规定子项在父项中的位置。
正如 Antonis 在评论中所建议的,您可以采用不同的方法。您可以使用 H:|[childView]|
和 V:|[childView]|
使子项的边缘与父项的边缘匹配。这不仅决定了大小,尽管是间接的,但也决定了位置。
我正在尝试将关系约束转换为视觉格式。子视图与父视图的宽度和高度相同。
这是我的代码:
[parentView addConstraint:[NSLayoutConstraint
constraintWithItem:childView
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:parentView
attribute:NSLayoutAttributeHeight
multiplier:1.0
constant:0]];
[parentView addConstraint:[NSLayoutConstraint
constraintWithItem:childView
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:parentView
attribute:NSLayoutAttributeWidth
multiplier:1.0
constant:0]];
如何将其转换为视觉格式?
我建议向 stroyboard 添加约束,在视图控制器中创建出口并在需要时更新常量。
根据不同的屏幕尺寸(4、5s、6、6 Plus 等)动态管理和更改将很容易
您可以使用两种视觉格式字符串来做到这一点,一种是水平的,一种是垂直的:
NSDictionary* views = NSDictionaryOfVariableBindings(parentView, childView);
NSArray* horzConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:[childView(==parentView)]" options:0 metrics:nil views:views];
NSArray* vertConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[childView(==parentView)]" options:0 metrics:nil views:views];
严格来说,这符合您显示的限制条件。它使子项具有与父项相同的大小,但不规定子项在父项中的位置。
正如 Antonis 在评论中所建议的,您可以采用不同的方法。您可以使用 H:|[childView]|
和 V:|[childView]|
使子项的边缘与父项的边缘匹配。这不仅决定了大小,尽管是间接的,但也决定了位置。