8vi*_*ius 1 cocoa-touch pan uigesturerecognizer ios
我有以下UIPanGestureRecognizer
设置:
- (void)pan:(UIPanGestureRecognizer *)gesture {
if ((gesture.state == UIGestureRecognizerStateChanged) ||
(gesture.state == UIGestureRecognizerStateEnded)) {
CGPoint translation = [gesture translationInView:self.superview];
gesture.view.center = CGPointMake(gesture.view.center.x + translation.x, gesture.view.center.y + translation.y);
[gesture setTranslation:CGPointZero inView:self.superview];
}
}
Run Code Online (Sandbox Code Playgroud)
我想在视图中平移,在同一视图中将一个地方移动到另一个地方.这样做是在移动视图,我如何修改它来做我想要的?
更新:这是我的方法最终正确平移的方式
- (void)pan:(UIPanGestureRecognizer *)gesture {
if ((gesture.state == UIGestureRecognizerStateChanged) ||
(gesture.state == UIGestureRecognizerStateEnded)) {
CGPoint translation = [gesture translationInView:self];;
self.origin = CGPointMake(self.origin.x + translation.x, self.origin.y + translation.y);
[gesture setTranslation:CGPointZero inView:self];
}
}
Run Code Online (Sandbox Code Playgroud)
origin
是我视图中的一个属性,它只标记图形中心的位置.在其setter方法中,setNeedsDisplay
只要更改此值,就会更新
好的,所以(这只是我的头顶,未经测试)如果你想在不使用UIScrollView的情况下水平滚动,试试这个:
- (void)pan:(UIPanGestureRecognizer *)gesture {
if ((gesture.state == UIGestureRecognizerStateChanged) ||
(gesture.state == UIGestureRecognizerStateEnded)) {
CGPoint translation = [gesture translationInView:self.superview];
gesture.view.center = CGPointMake(gesture.view.center.x + translation.x, gesture.view.center.y);
[gesture setTranslation:CGPointZero inView:self.superview];
}
}
Run Code Online (Sandbox Code Playgroud)
你要做的只是遗漏+ translation.y
.
如果你想使用UIScrollView(我推荐),请参阅以下教程之一:网上有没有好的UIScrollView教程?
归档时间: |
|
查看次数: |
5165 次 |
最近记录: |