【发布时间】:2015-02-09 10:01:13
【问题描述】:
我的视图控制器中有几个视图在检测到向上滑动时向上移动,然后在检测到向下滑动时向下移动。我通过使用 CGRectOffset 调整 y 原点来强制视图移动。我现在已经使用 IB 对我的视图应用了约束,但我不确定移动视图的最佳方式是什么,以便它们最终位于 iphone 5、6 和 6+ 上的正确位置。
目前我正在做这样的事情:
[self.view layoutIfNeeded];
self.panFrameVerticalConstraint.constant = self.panFrameVerticalConstraint.constant +338;
[UIView animateWithDuration:5
animations:^{
[self.view layoutIfNeeded];
}];
使用比率更改常数会更好吗?那么对于上面的约束,与其使用 338,不如这样做:
self.panFrameVerticalConstraint.constant = self.panFrameVerticalConstraint.constant + (self.panView.frame.size.height/1.680);
//self.panView.frame.size.height = 568
//(568/1.680) = 338
【问题讨论】:
-
@Brosef,请问您是如何实现向上/向下滑动手势来移动视图的?我正在尝试做类似的事情,但不知道从哪里开始。谢谢
-
@Pangu 我几乎按照以下答案中的步骤进行操作。我创建了一个
IBOutletNSLayoutConstraint属性并将其连接到我想在界面生成器中调整的约束。然后,当我需要向上移动视图时,我像这样self.panFrameVerticalConstraint.constant = -(self.panedView.frame.size.height/1.68);更改了我的常量。在更改常量之前,我调用了layoutIfNeeded。更改常量后,我在块中调用animateWithDuration并再次调用layoutIfNeeded,就像下面的答案一样。 -
@Brosef,我很抱歉我还在学习,但是你是如何从 UIView 中检测到你想要向上移动以调用动画的向上滑动手势的?
-
@pangu 在
viewDidLoad中,您需要添加UISwipeGestureRecognizer以及检测到滑动时调用的方法。UISwipeGestureRecognizer * swipeUpRec = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleUpSwipe:)];然后将手势识别器添加到任何帧以检测滑动[self.someView addGestureRecognizer:swipeUpRec];
标签: ios objective-c swift autolayout nslayoutconstraint