手势拖动. 约束图片边缘 .限制拉动范围

@implementation WDEnterLineViewController{

    float xx;
    float yy;
    UIImageView *bgImgView;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    [self createLayout];

}

-(void)createLayout{

    bgImgView = [[UIImageView alloc]init];

    UIImage *image = [UIImage imageNamed:@"110"];
    bgImgView.image = image;
    CGImageRef imageRef = [image CGImage];
    CGSize size = CGSizeMake(CGImageGetWidth(imageRef), CGImageGetHeight(imageRef));
    xx = size.width;
    yy = size.height;
    WDLog(@"%f====%f",xx,yy);
    [self.view addSubview:bgImgView];

    [bgImgView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.centerX.equalTo(self.view.mas_centerX);
        make.centerY.equalTo(self.view.mas_centerY);
        make.width.offset(size.width);
        make.height.offset(size.height);

    }];

    [self addGestureRecognizerToView:bgImgView];

    //如果处理的是图片.
    [bgImgView setUserInteractionEnabled:YES];
    [bgImgView setMultipleTouchEnabled:YES];

}

// 添加手势
- (void) addGestureRecognizerToView:(UIView *)view
{
    // 移动手势
    UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panView:)];
    [view addGestureRecognizer:panGestureRecognizer];
}

// 处理拖拉手势
- (void) panView:(UIPanGestureRecognizer *)panGestureRecognizer
{
    UIView *view = panGestureRecognizer.view;
    if (panGestureRecognizer.state == UIGestureRecognizerStateBegan || panGestureRecognizer.state == UIGestureRecognizerStateChanged) {
        CGPoint translation = [panGestureRecognizer translationInView:view.superview];
        [view setCenter:(CGPoint){view.center.x + translation.x, view.center.y + translation.y}];
        [panGestureRecognizer setTranslation:CGPointZero inView:view.superview];
    }else if(panGestureRecognizer.state == UIGestureRecognizerStateEnded){
        WDLog(@"-centerX:%f===centerY:%f",bgImgView.center.x,bgImgView.center.y);
        WDLog(@"%f====%f",self.view.center.x,self.view.center.y)

        CGPoint point = CGPointMake(bgImgView.center.x, bgImgView.center.y);

        if (point.x >= xx / 2) {
            point.x = xx / 2;
        };
        if (point.x <= self.view.center.x - (xx - APP_WIDTH) / 2) {
            point.x = self.view.center.x - (xx - APP_WIDTH) / 2;
        };
        if (point.y >= yy / 2 + 64) {
            point.y = yy / 2 + 64;
        };
        if (point.y <= self.view.center.y - (yy - APP_HEIGHT) / 2) {
            point.y = self.view.center.y - (yy - APP_HEIGHT) / 2;
        };

        bgImgView.center = point;
    }
}
时间: 2024-08-06 05:43:47

手势拖动. 约束图片边缘 .限制拉动范围的相关文章

js实现移动端图片预览:手势缩放, 手势拖动,双击放大...

.katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > .katex-html { display: block; } .katex-display > .katex > .katex-html > .tag { position: absolute; right: 0px; } .katex { font-style: normal; font

拖动实现图片移动效果

 拖动实现图片移动效果 先写一个手势,注意图片的 userInteractionEnabled设置为yes UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)]; UIImage *image = [UIImage imageNamed:@"r.jpg"]; UIImageView *imageView = [[UIImageVi

ViewPager手势切换页面+图片左右轮播效果(精简版本)

效果图是:手势可以左右滑动界面,并且自动从第一张开始轮播到最后一张图片,紧接着开始从最后一张图片开始向反方向第一张轮播 如果你需要轮播效果,(我这个是精简版本的)  如果你需要手势来回切换图片  如果你不需要ui提供定位圆点 那么这篇博客  值得你看看 源码地址就不传了,代码已经贴出,你可以随便放5张图片即可 activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android

使用UIScrollView和UIPageControl做一个可以用手势来切换图片的效果

利用UIScrollView的滚动效果来实现,先上图: 实现过程是:在viewController里先加入UIScrollView和UIPageControl: -(void) loadView { [super loadView]; UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320,480)]; UIPageControl* pageControl = [[UIPageCont

自定义ImageVIew 支持手势 拖动、缩放、旋转

import android.content.Context; import android.graphics.Matrix; import android.graphics.PointF; import android.util.AttributeSet; import android.util.FloatMath; import android.view.MotionEvent; import android.widget.ImageView; public class ImageTouch

图片3d轮放查看效果(V2.0):使用鼠标拖动实现图片的轮放

上面的版本号为通过左右button实现图片轮放,这个版本号.是通过在窗体拖动鼠标.左右滑动图片. 关键点在于选择一个合适的值.使鼠标拖动时.全部图片均可显示,可是不会滑动过快或离开窗体. 不多说,直接贡献源代码. <style> img { position: absolute; top:200; left:400px; /* border: 1px solid #333;*/ padding: 2px 5px 2px 5px; -webkit-transition:ease all 0.7s

【分享】jQuery无插件实现 鼠标拖动切换图片/内容 功能

前言 我就想随便叨逼叨几句,爱看就看几句,不爱看就直接跳过看正文就好啦~ 这个方法是仿写页面时我自己研究出来,可能有比我更简单的方法. 但我不管,因为我没查我不知道,我就觉得我的最好啦,耶耶耶~ 效果图 功能描述 1.鼠标按住移动一定距离,内容随之进行切换. 2.开始和结尾处不能再拖动了. 3.下方的控制条随之变换,进行切换指示. 解决思路 1.利用jQuery监听鼠标移动距离 2.内容浮动排成一列,长度是父容器宽度的3倍 3.当移动距离超过一定长度时,内容移动一倍父容器宽度的距离 4.内容移动

使用UIScrollView和UIPageControl做一个能够用手势来切换图片的效果

利用UIScrollView的滚动效果来实现,先上图: 实现过程是:在viewController里先增加UIScrollView和UIPageControl: -(void) loadView { [super loadView]; UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320,480)]; UIPageControl* pageControl = [[UIPageCont

android项目 之 记事本(14) ----- 手势缩放与拖拽图片

本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020 上节实现了查看图片及录音的功能,其中查看图片,可以调用系统的图库来查看图片,也可以自定义Activity来查看图片,今天就在上节的基础上,实现手势缩放与拖拽图片. 想必大家都用过系统的图库,浏览图片时,可以通过手势放大或缩小图片,旋转图片,拖拽图片等功能,我们也为自已定义的查看图片的Activity增加手势缩放与拖拽图片的功能,效果如下图: 上面四幅图中,演示了通过手势(多点触