如何在UIScrollView中实现pinch to close功能?

时间:2014-02-08 21:49:34

标签: ios objective-c cocoa-touch uiscrollview uiimageview

当用户通过捏合放大远离图像时,然后释放,我希望它关闭UIImageView /滚动视图,基本上退出图片查看器。

我该怎么做呢? scrollViewDidEndZooming在之后被称为,它会动画回原位,所以我无法使用它,并且其他任何委托方法都没有用。

1 个答案:

答案 0 :(得分:0)

我为我的一个应用程序创建了这个效果,别忘了设置你的scrollview的委托。 你需要用你的捏手势更新私有方法(那就是全部)

<。ph。

的代码
#import <UIKit/UIKit.h>

@interface ImageViewerController : UIViewController<UIScrollViewDelegate>

// The scroll view used for zooming.
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;

// The image view that displays the image.
@property (weak, nonatomic) IBOutlet UIImageView *imageView;

// The image that will be shown.
@property (strong, nonatomic) NSString *imageUrlString;

@end
<。pm的代码。

#import "ImageViewerController.h"

@interface HNImageViewerController ()

- (IBAction)handleSingleTap:(UIButton*)tapGestureRecognizer;
@end

@implementation ImageViewerController

- (void)viewDidLoad {
[super viewDidLoad];
[self.imageView setImage:[UIImage imageNamed:@"placeholder-image"]];
self.scrollView.delegate=self;
}

- (BOOL)prefersStatusBarHidden {
return YES;
}

#pragma mark - UIScrollViewDelegate methods

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return self.imageView;
}

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
if (self.scrollView.zoomScale == self.scrollView.minimumZoomScale) {
    [self dismissViewControllerAnimated:YES completion:nil];
}
}

#pragma mark - Private methods

- (IBAction)handleSingleTap:(UIButton *)tapGestureRecognizer {

[self dismissViewControllerAnimated:YES completion:nil];
}