-1

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

最好通过项目查看,它是一个小下载,只包含视图控制器。

基本上,我的 UILabel 通过自动布局完美地保持在原位,但是当我隐藏导航栏(您可以在项目中通过在任何地方点击屏幕来执行此操作)时,它会导致它抽搐。无论导航栏发生了什么,我如何使它保持在完全相同的位置?

似乎它是动画的(我想要的)导致 AutoLayout 感到困惑。

标签上的约束如下所示:

在此处输入图像描述

有人可以就我做错了什么提供一些建议吗?

4

1 回答 1

1

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

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

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

然后在 hideControls 方法中,我可以为约束设置动画:

- (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;
}
于 2013-06-25T00:43:07.810 回答