Uiview 使用iOS 7';s视图控制器为全屏,是否可以将约束设置为视图的最顶部,而不仅仅是导航栏?

Uiview 使用iOS 7';s视图控制器为全屏,是否可以将约束设置为视图的最顶部,而不仅仅是导航栏?,uiview,uiviewcontroller,ios7,autolayout,nslayoutconstraint,Uiview,Uiviewcontroller,Ios7,Autolayout,Nslayoutconstraint,当我将UILabel与顶部对齐时,我的选项是superview,但它始终使用导航栏作为参考点。当我隐藏导航栏时会出现问题,约束会根据不再有导航栏这一事实进行调整,并导致标签被拉得更高,这是我不希望发生的不幸反应(我希望它保持原位) 是否可以说我的UILabel应该总是,比如说,从全屏视图的顶部算起100磅?我不确定Interface Builder,但你可以在代码中轻松做到这一点,例如: [self.view addConstraints:[NSLayoutConstraint

当我将UILabel与顶部对齐时,我的选项是superview,但它始终使用导航栏作为参考点。当我隐藏导航栏时会出现问题,约束会根据不再有导航栏这一事实进行调整,并导致标签被拉得更高,这是我不希望发生的不幸反应(我希望它保持原位)


是否可以说我的UILabel应该总是,比如说,从全屏视图的顶部算起100磅?

我不确定Interface Builder,但你可以在代码中轻松做到这一点,例如:

[self.view addConstraints:[NSLayoutConstraint
                           constraintsWithVisualFormat:@"V:|-100-[label]"
                           options:0
                           metrics:nil
                           views:@{@"label" : self.label}]];
更新:之前我假设标签是主视图的子视图。如果不是,则可以使用以下约束:

[self.view addConstraint:[NSLayoutConstraint
                          constraintWithItem:self.label
                          attribute:NSLayoutAttributeTop
                          relatedBy:NSLayoutRelationEqual
                          toItem:self.view
                          attribute:NSLayoutAttributeTop
                          multiplier:1.0
                          constant:100]];

我已经对它进行了测试,它工作得很好。

我对Interface Builder不太确定,但您可以在代码中轻松实现这一点,例如:

[self.view addConstraints:[NSLayoutConstraint
                           constraintsWithVisualFormat:@"V:|-100-[label]"
                           options:0
                           metrics:nil
                           views:@{@"label" : self.label}]];
更新:之前我假设标签是主视图的子视图。如果不是,则可以使用以下约束:

[self.view addConstraint:[NSLayoutConstraint
                          constraintWithItem:self.label
                          attribute:NSLayoutAttributeTop
                          relatedBy:NSLayoutRelationEqual
                          toItem:self.view
                          attribute:NSLayoutAttributeTop
                          multiplier:1.0
                          constant:100]];

我已经测试过了,效果很好。

也许你可以试试导航栏的“半透明”选项。也许你可以试试导航栏的“半透明”选项。仍然做同样的事情。仍然做同样的事情。