2017-07-08 255 views
0


我做了一个可拖动的UIView,它可以在屏幕上的任何位置移动。我将它设置自动隐藏3秒钟,这个代码后它的1/2部分:
如何知道UIView在屏幕左侧或右侧的当前位置?

-(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

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

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

然后,动画在它方面的视图到左边或右边。 您已完成左侧。

+0

谢谢,这是工作。 –

相关问题