如何知道UIView在屏幕左侧或右侧的当前位置?




我正在制作一个可拖动的UIView,它可以在屏幕上的任何地方移动。我使用以下代码设置它在 1 秒后自动隐藏 3/3 的一部分:

-(void)hidePart {
if (self.frame.origin.x > 0) {
[UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionTransitionNone animations:^{
self.frame = CGRectMake(0 - self.frame.origin.x - self.frame.size.width/3, self.frame.origin.y, self.frame.size.width, self.frame.size.height);
} completion:^(BOOL finished) {
}];
}
}

如果我将 UIView 放在屏幕左边缘附近,它就可以正常工作。但是如果我拖动并把它放在右边缘附近,3 秒后它会跑到左侧并退出屏幕。我知道这是因为我将延迟 3 秒后的帧设置为:(当前 X - 帧(,在这种情况下当前 X 非常大。

我想知道如何让它变得更好?我的意思是,如果这个 UIView 靠近左边缘,它会向左侧出去,如果它靠近右边缘,它会向右侧出去?

首先,您应该认识到可拖动视图位于视图的哪个部分,左侧或右侧。

CGFloat pointLeft = CGRectGetMidX(self.frame);
BOOL isLeft = CGRectGetMidX(self.frame) < kScreenWidth/2;

然后,根据视图向左或向右设置动画。 你已经完成了左边。

最新更新