我有一个UILabel自动布局定位在屏幕上,但是当我隐藏导航栏,它会导致标签“抽搐”第二个

项目: http : //cl.ly/1T2K0V3w1P21

通过这个项目可以看出,这只是一个简单的下载,仅仅是视图控制器。

基本上,我的UILabel与自动布局保持完美的地方,但是当我隐藏导航栏(你可以通过在任何地方点击屏幕在项目中做到这一点),导致它抽搐。 不pipe导航栏上发生了什么,我如何使它保持在完全相同的位置?

它似乎是animation(我想)导致AutoLayout感到困惑。

以下是标签上的限制条件:

在这里输入图像说明

任何人都可以提供一些build议,我做错了什么?

您可以尝试从标签(在常量中为22)中定义超级视图的顶部空间约束,将其作为IBOutlet连接到视图属性,并在隐藏导航栏时为其添加animation或所示。

例如,我声明顶部空间属性为topSpaceConstraint:

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *topSpaceConstraint; 

然后在hideControls方法里面,我可以animation约束:

 - (void)hideControls:(BOOL)visible { if (visible) { [UIView animateWithDuration:UINavigationControllerHideShowBarDuration animations:^{ self.topSpaceConstraint.constant = 66; //44 is the navigation bar height, you need to find a way not to hardcode this [self.view layoutIfNeeded]; }]; } else { [UIView animateWithDuration:UINavigationControllerHideShowBarDuration animations:^{ self.topSpaceConstraint.constant = 22; [self.view layoutIfNeeded]; }]; } [self.navigationController setNavigationBarHidden:visible animated:YES]; self.backFiftyWordsButton.hidden = visible; self.forwardFiftyWordsButton.hidden = visible; self.WPMLabel.hidden = visible; self.timeRemainingLabel.hidden = visible; }