我将如何在 UIScrollView 中实现捏合关闭功能



当用户通过捏出图像缩小到足够远的位置时,然后释放,我希望它关闭UIImageView/滚动视图,基本上退出图片查看器。

我将如何做到这一点? scrollViewDidEndZooming 是在动画恢复到位调用的,所以我不能使用它,其他委托方法似乎都没有帮助。

我已经为我的一个应用程序创建了此效果,请不要忘记设置滚动视图的委托。您需要使用捏合手势更新私有方法(仅此而已)

.h 文件代码

#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

.m 代码

#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];
}

最新更新