2017-07-08 7 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

ありがとうございます、それは仕事です。 –

関連する問題