我正在制作一个可拖动的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更接近左边缘,它将向左侧移动,如果它更接近右边缘,它将向右侧移动?
答案 0 :(得分:1)
首先,您应该认识到可拖动视图的哪个部分是左侧还是右侧。
CGFloat pointLeft = CGRectGetMidX(self.frame);
BOOL isLeft = CGRectGetMidX(self.frame) < kScreenWidth/2;
然后,根据它将视图设置为向左或向右动画。 你已经完成了左派。