我有以下代码:
self.noArticlesView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, self.view.frame.size.height)];
UIImage *backgroundPattern = [UIImage imageNamed:@"no-articles-background.png"];
self.noArticlesView.backgroundColor = [UIColor colorWithPatternImage:backgroundPattern];
[self.view addSubview:self.noArticlesView];
UIImage *noArticlesImage = [UIImage imageNamed:@"no-articles-icon.png"];
UIImageView *noArticlesImageView = [[UIImageView alloc] initWithImage:noArticlesImage];
noArticlesImageView.translatesAutoresizingMaskIntoConstraints = NO;
[self.noArticlesView addSubview:noArticlesImageView];
NSLayoutConstraint *horizontalCenterConstraint = [NSLayoutConstraint constraintWithItem:noArticlesImageView attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.noArticlesView attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0.0];
[self.noArticlesView addConstraint:horizontalCenterConstraint];
NSLayoutConstraint *verticalPlacementConstrant = [NSLayoutConstraint constraintWithItem:noArticlesImageView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.noArticlesView attribute:NSLayoutAttributeBottom multiplier:1.0 constant:-230.0];
[self.noArticlesView addConstraint:verticalPlacementConstrant];
基本上,我noArticlesView
在视图控制器的视图之上添加了一个视图(名为
然后,我在该视图中添加一个图像作为子视图,以此作为指示。
但是,当我将图像上的上述约束更改为具有属性toItem:self.view
并将其添加到self.view
而不是self.noArticlesView
它时,它会从视图的顶部而不是底部推动它(即 200 作为常量将它从顶部推动 200px)。
我通过设置图像的相对于noArticlesView
而不是的约束来解决它self.view
,但我仍然对这种行为感到好奇(我仍在学习自动布局并想掌握它)。
另外,我现在做的对吗?如果我希望它位于距离底部 230px 的位置,是否将常量设置为 -230 ?将常量设置为负坏形式还是什么?