Dan*_*elH 2 layout constraints view ios
在我的应用中,我想要实现以下布局:
因此,父视图包含两个子视图。第一个精确地在中间(高度/ 2)处结束,第二个精确地从父视图的中间开始。我发现在有约束的IB中不可能做到这一点。所以我在viewDidLoad
方法中使用了这段代码:
NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:firstView
attribute:NSLayoutAttributeHeight
relatedBy:0
toItem:self.view
attribute:NSLayoutAttributeHeight
multiplier:0.5
constant:0];
[self.view addConstraint:constraint];
Run Code Online (Sandbox Code Playgroud)
现在它可以使用,但前提是该应用程序可以在iPhone上运行。因为视图的大小就像iPhone屏幕一样。如果此应用程序在iPad上运行,则存在问题,因为屏幕尺寸不同,因此该父视图更长。约束(上面的代码)仍然需要IB的视图大小的0.5 *大小,而不是iPad的视图大小的大小。物品toItem:self.view
仍来自IB。
结果是该视图在iPad中的大小与在iPhone中的大小相同。在iPad中,有很大的空白空间,然后有iPhone尺寸的视图。
您能告诉我要做些什么才能使其在各种屏幕尺寸上通用吗?非常感谢你
使用约束可以做到这一点,但是IB有点烦人且不灵活,它使约束管理器变得有些古怪。这是我的管理方式:
例如
- (void)viewDidLoad
{
[super viewDidLoad];
NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:self.topView
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeHeight
multiplier:0.5
constant:0];
[self.view addConstraint:constraint];
}
Run Code Online (Sandbox Code Playgroud)
而已。IB约束的屏幕截图如下所示: