Ios NSLayoutRelationConstraint到可视格式约束
我正在尝试将关系约束转换为可视格式。子视图的宽度和高度与超级视图相同 这是我的密码:Ios NSLayoutRelationConstraint到可视格式约束,ios,objective-c,nslayoutconstraint,visual-format-language,Ios,Objective C,Nslayoutconstraint,Visual Format Language,我正在尝试将关系约束转换为可视格式。子视图的宽度和高度与超级视图相同 这是我的密码: [parentView addConstraint:[NSLayoutConstraint constraintWithItem:childView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:p
[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、5、6、6等)动态管理和更改将非常容易。您可以使用两个可视格式字符串,一个水平,一个垂直:
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]|
使子对象的边与父对象的边匹配。这不仅决定了大小,虽然是间接的,但也决定了位置。问题是如何通过视觉格式来做到这一点,而不是问它是否有更好的方法来完成这一点。提示@“H:|[childView]|”
,@“V:|[childView]|”