3

此处的示例项目:http: //cl.ly/1n211V1e433G

我正在构建一个应用程序,您可以在其中向上或向下滑动标签,使用UIPanGestureRecognizer调整常量以NSLayoutConstraint了解文本距底部的距离。

- (IBAction)labelPanned:(UIPanGestureRecognizer *)sender {
    CGPoint p = [sender locationInView:self.view];
    p.y -= sender.view.frame.size.height / 2.0;

    self.labelDistanceFromBottomConstraint.constant = -p.y + [UIScreen mainScreen].bounds.size.height - 250 + self.textToReadLabel.frame.size.height;
}

我认为该约束的优先级低于两个约束,即它必须从顶部或底部开始大于或等于 50。基本上是更强的约束,确保它不会太高或太低。

当用户进入全屏模式时,文本标签应该保持在原位而不是移动。如示例项目所示,它工作得很好,除了标签移动到顶部时,进入全屏模式时它会向上滑动。

为什么是这样?我怎样才能阻止这种行为?

4

1 回答 1

1

这是因为,您已经将UILabel约束设置为从顶部调整大小,这导致UILabel当您在全屏时视图框架发生变化时从顶部进行调整,因此您Remove the Top constraint可以尝试停止平移到某个位置y position

- (IBAction)labelPanned:(UIPanGestureRecognizer *)sender {
       CGPoint p = [sender locationInView:self.view];
       if(p.y<150.0)return;
}

编辑

关键是您不应该为标签设置从顶部调整的约束,因此删除顶部约束它不会在您进入全屏时自动调整。

于 2013-11-10T00:42:42.327 回答