共计 2043 个字符,预计需要花费 6 分钟才能阅读完成。
-
思路
图片预览,优先思考根底控件 UIImageView、UIButton
图片预览中可能需设置不同的 mode,优先思考 UIImageView
typedef NS_ENUM(NSInteger, UIViewContentMode) { UIViewContentModeScaleToFill, UIViewContentModeScaleAspectFit, UIViewContentModeScaleAspectFill, UIViewContentModeRedraw, UIViewContentModeCenter, UIViewContentModeTop, UIViewContentModeBottom, UIViewContentModeLeft, UIViewContentModeRight, UIViewContentModeTopLeft, UIViewContentModeTopRight, UIViewContentModeBottomLeft, UIViewContentModeBottomRight, }
图片放大、放大的思路:1. 手势 +frame 2.scrollview 的 zoomScale
很欢快的决定抉择 2,不要问为什么,因为我懒,能用零碎提供的,坚定不折腾
-
上菜
-
设置页面属性
@property (nonatomic, strong) UIScrollView *mScroll; @property (nonatomic, strong) UIImageView *imgInfo;
-
界面初始化
self.mScroll = [[UIScrollView alloc] initWithFrame:CGRectZero]; self.mScroll.backgroundColor = [UIColor colorWithHexs:0x3f3f3f]; self.mScroll.maximumZoomScale = 3.0; self.mScroll.minimumZoomScale = 1; self.mScroll.delegate = self; self.mScroll.showsVerticalScrollIndicator = NO; self.mScroll.showsHorizontalScrollIndicator = NO; [self.view addSubview:self.mScroll]; [self.mScroll mas_makeConstraints:^(MASConstraintMaker *make) {make.edges.equalTo(self.preView); }]; self.imgInfo = [[UIImageView alloc] initWithFrame:CGRectZero]; self.imgInfo.clipsToBounds = YES; [self.imgInfo setUserInteractionEnabled:YES]; self.imgInfo.backgroundColor = [UIColor colorWithHexs:0x3f3f3f]; [self.mScroll addSubview:self.imgInfo]; [self.imgInfo mas_makeConstraints:^(MASConstraintMaker *make) {make.edges.equalTo(self.mScroll); make.width.equalTo(self.mScroll); }];
其中 maximumZoomScale 与 minimumZoomScale 示意可缩放水平
-
顺带加个双击手势,比方双击可放大,再放大,再放大
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapHandlerTwice)]; tap.numberOfTapsRequired = 2; [self.imgInfo addGestureRecognizer:tap];
-
double click 间接管制缩放
- (void)tapHandlerTwice {if (self.mScroll.zoomScale < 2) {[self.mScroll setZoomScale:2]; } else if (self.mScroll.zoomScale < 3) {[self.mScroll setZoomScale:3]; } else {[self.mScroll setZoomScale:1]; } }
-
UIScrollViewDelegate 设置 scrollview 的 Zooming View
#pragma mark - UIScrollViewDelegate - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {return self.imgInfo;
-
- Game Over
正文完