美文网首页
IOS多图形的平移手势移动

IOS多图形的平移手势移动

作者: 怀心逝水 | 来源:发表于2017-12-06 17:11 被阅读237次
329B78FF-839A-43DE-A54A-73F51C3841C9.png

还是老规矩,先上效果图。


font .gif

当然这是我在公司做的的手机壳设计的DIY,其中就多个图层的手势移动做个简单的说明吧!

首先说一个图层的移动,比如一个SomeOneView,当然这个对象中还包含图片和边框。
我们创建好了对象之后,在创建一个全局的UIPanGestureRecognizer对象,初始化之后,

self.panGes = [[UIPanGestureRecognizer alloc] initWithTarget:self
                                                          action:@selector(viewMoveWithPan:)];
self.panGes.delegate = self;
[self addGestureRecognizer:self.panGes];

这里的代理是为了解决多个手势的时候的冲突。(指的是一个图层上的多个手势)

这样我们就给我们的视图层加了移动手势了,接下来就是指明在哪个图层上移动的,这样我们需要确定它移动的父类图层,我这里的当然是手机壳背面的区域。
例如你的父视图是superView1,那么:

关于移动有两种方式:
1.根据transform的方式来。

CGPoint point = [panGes translationInView:superView1];
panGes.view.transform = CGAffineTransformTranslate(panGes.view.transform, point.x, point.y);
 [panGes setTranslation:CGPointZero panGes.view];

2.根据CGPoint,用视图的中心点去移动。

@property (assign, nonatomic) CGPoint touchStart;

- (void)solidViewDidPan:(UIPanGestureRecognizer *)panGes {
    
    if (panGes.state == UIGestureRecognizerStateBegan) {
        
        self.touchStart = [panGes locationInView:self.superview];
        
    }else if (panGes.state == UIGestureRecognizerStateChanged) {
        
        CGPoint touch = [panGes locationInView:self.superview];
        CGPoint newCenter = CGPointMake(self.center.x + touch.x - self.touchStart.x,
                                        self.center.y + touch.y - self.touchStart.y);
        self.center = newCenter;
        self.touchStart = touch;
        
    }else if (panGes.state == UIGestureRecognizerStateEnded) {

    }
    
}

当然每一种都有各自的好处,第一种方式比较简洁,但不利于去确定视图的移动范围,比如想要在移动到中间的时候,出现校准线。这样用第二种方式就会比较容易,通过用移动图层的中心点是否在中间的某一个区域中的时候,就会出现瞄准线,同时显时的设置移动图层的中心点即可。

例如代码:

static CGFloat const YOFFSET = 8;
static CGFloat const XOFFSET = 8;

if ((newCenter.x > panView.width/2.0 - XOFFSET &&
             newCenter.x < panView.width/2.0 + XOFFSET) &&
            (newCenter.y > panView.height/2.0 - YOFFSET &&
             newCenter.y < panView.height/2.0 + YOFFSET)) {
                
                newCenter.x = panView.width/2.0;
                newCenter.y = panView.height/2.0;
                view.center = newCenter;
                [[FMGlobal getFreeDesignVC] showHLineViewWithFlag:YES];
                [[FMGlobal getFreeDesignVC] showVLineViewWithFlag:YES];
                return;
            }

当然这只是部分的代码,重要的是说这个实现起来的思路而已。

相关文章

  • IOS多图形的平移手势移动

    还是老规矩,先上效果图。 当然这是我在公司做的的手机壳设计的DIY,其中就多个图层的手势移动做个简单的说明吧! 首...

  • UIGesture扩展手势:UIPan平移、UISwipe滑动、

    UIPanGestureRecognizer平移手势:可以用手指在屏幕上移动的手势 UISwipeGestureR...

  • 苏教版数学四年级下册第一单元《平移、旋转和轴对称》

    图形的平移 知识点1:平移的特点和方法 在平面内,将一个图形沿着某个方向移动一定的距离,叫图形的平移。平移的距离是...

  • iOS 常见的几种手势

    以下是六种常见的手势 1、 (点击) 2、(捏合) 3、(旋转) 4、(滑动,快速移动) 5、(平移,慢速移动) ...

  • 稳拿几何综合题,学会运用几何变换法

    几何变换包括: 1、平移 平移,是指在平面内,将一个图形上的所有点都按照某个直线方向做相同距离的移动,这样的图形运...

  • 《平移》

    知识点:平移前图形/平移后图形 所有对应点 对应点连线 平移前图形和平移后图形所有对应点之间的连线平行且相等! 平...

  • 13图表缩放

    Highcharts 支持两种方式缩放,缩放(zoom)和平移(panning),完全支持移动端手势。涉及图表缩放...

  • 手势

    点击手势 捏合手势 旋转手势 轻扫手势 拖拽手势 边缘平移手势 长按手势

  • 平移和缩放

    平移 要平移图形,请在所需方向移动鼠标的同时右键单击并按住。您也可以使用箭头键跳到图形中的下一个实体。这在浏览大型...

  • 手势平移

    在touchMoved方法中 如果采用pan手势平移, 则在UIPangestureRecognizer响应事件中...

网友评论

      本文标题:IOS多图形的平移手势移动

      本文链接:https://www.haomeiwen.com/subject/eayutxtx.html