首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIPinchGestureRecognizer和UIImageView的问题

UIPinchGestureRecognizer和UIImageView的问题
EN

Stack Overflow用户
提问于 2012-12-24 20:50:58
回答 3查看 2.3K关注 0票数 0

我试图通过UIPinchGestureRecognizer压缩图像,但问题是我的代码不能正常工作,实际上它不能缩放我的图像

代码语言:javascript
复制
-(void) pinching: (UIPinchGestureRecognizer *) sender {

    CGAffineTransform myTransformation =
    CGAffineTransformMakeScale(sender.scale, sender.scale);
    sender.view.transform = myTransformation;
}


- (void)viewDidLoad
{
  UIPinchGestureRecognizer *pinch =
    [[UIPinchGestureRecognizer alloc]
     initWithTarget:self
     action:@selector(pinching:)];

    pinch.delegate = self;

    [imageBG addGestureRecognizer:pinch];

    [imageBG setUserInteractionEnabled:YES];
    [imageBG setMultipleTouchEnabled:YES];
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-24 21:00:27

尝试使用UIScrollView

要执行此操作,请创建它

代码语言:javascript
复制
self.scrollView = [[UIScrollView alloc] initWithFrame:...];
self.scrollView.delegate = self;
self.scrollView.maximumZoomScale = 2.0; // adjust as you need
self.scrollView.minimumZoomScale = 0.5; // adjust as you need
[self.scrollView addSubview:self.imageView];

并添加委托方法:

代码语言:javascript
复制
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
    return self.imageView;
}
票数 1
EN

Stack Overflow用户

发布于 2012-12-24 21:00:36

只需在.h文件中获取一个变量,如下图所示。

代码语言:javascript
复制
CGFloat lastScale;

并使用这种类型的代码。

viewWillAppear:方法中,只需添加它..

代码语言:javascript
复制
- (void)viewWillAppear:(BOOL)animated
{
     UIPinchGestureRecognizer *pinchRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(scale:)];
        [pinchRecognizer setDelegate:self];
        [yourImageView addGestureRecognizer:pinchRecognizer];
}

-(void)scale:(id)sender {
    if([(UIPinchGestureRecognizer*)sender state] == UIGestureRecognizerStateEnded) {

            lastScale = 1.0;
            return;
        }

        CGFloat scale = 1.0 - (lastScale - [(UIPinchGestureRecognizer*)sender scale]);

        CGAffineTransform currentTransform = [(UIPinchGestureRecognizer*)sender view].transform;
        CGAffineTransform newTransform = CGAffineTransformScale(currentTransform, scale, scale);

        [[(UIPinchGestureRecognizer*)sender view] setTransform:newTransform];
        yourImageView.transform = newTransform

        lastScale = [(UIPinchGestureRecognizer*)sender scale];
}

也可以试试这段代码。

票数 1
EN

Stack Overflow用户

发布于 2012-12-24 21:05:18

您需要添加scrollView才能启用缩放。添加您的imageView作为滚动视图的subView。将UIScrollViewDelegate的代理设置为self。实现委托方法。

代码语言:javascript
复制
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView

{
    //return the imageview here
    return self.imageView;

}

在此处缩放您的图像视图:

代码语言:javascript
复制
- (CGRect)zoomRectForScrollView:(UIScrollView *)scrollView withScale:(float)scale withCenter:(CGPoint)center

你可以参考这个example from Apple

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14021669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档