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

时间:2017-07-08 02:18:13

标签: ios objective-c uiview


我正在制作一个可拖动的UIView,它可以移动到屏幕上的任何位置。然后我用这段代码设置它会在3秒后自动隐藏它的1/2部分:

-(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更接近左边缘,它将向左侧移动,如果它更接近右边缘,它将向右侧移动?

1 个答案:

答案 0 :(得分:1)

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

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

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

相关问题