iOS图片预览、放大缩小
思路
图片预览,优先考虑基础控件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
iOS图片预览、放大缩小的更多相关文章
- 手动实现图片预览-放大缩小全屏支持IE9以上
#{extends '/Index/index.html' /} #{set title:'意见反馈' /} <script src="/public/mgr/javascripts/ ...
- 【VUE】图片预览放大缩小插件
From: https://www.jianshu.com/p/e3350aa1b0d0 在看项目时,突然看到预览图片的弹窗,感觉好僵硬,不能放大,不能切换,于是便在网上找下关于图片预览的插件,有找到 ...
- HTML5图片预览 放大
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 微信企业号办公系统-图片预览放大功能-previewImage
在微信里看过文章的应该知道,文章里的图片点击后可以放大.分享和保存. 然而自己在微信里开发的网页,里面的图片点击后没办法实现这个效果,然后就去看了下微信JS文档,里面有个previewImage可以调 ...
- 【原创】iOS图片预览(支持缩放和移动)
1.传入图片 PreViewController.h: #import <UIKit/UIKit.h> @interface PreViewController : UIViewContr ...
- JS微信网页使用图片预览(放大缩小)
前言 需求在微信网页中客户点击图片可进行预览放大缩小功能,网上找了各种js方式实现, 唯一的麻烦就是不兼容或者和项目框架不兼容 次函数只只用于部分客户端,否则会出现 WeixinJSBridge is ...
- Ionic实战三:Ionic 图片预览可放大缩小左右滑动demo-iClub图片预览
这个demo的主要功能有两个,一个是首页的导航向上拉动会浮动在最上面的效果,另一个就是我们平时非常实用的功能,就是图片预览功能 点击可以放大图片,并且可以左右滑动,还可以双击放大缩小图片以及双手指控制 ...
- js实现移动端图片预览:手势缩放, 手势拖动,双击放大...
.katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...
- JS 解决 IOS 中拍照图片预览旋转 90度 BUG
上篇博文[ Js利用Canvas实现图片压缩 ]中做了图片压缩上传,但是在IOS真机测试的时候,发现图片预览的时候自动逆时针旋转了90度.对于这个bug,我完全不知道问题出在哪里,接下来就是面向百度编 ...
随机推荐
- Docker及其使用思维导图
学习Docker的使用. 包括Docker的一些命令,Docker容器的使用,Docker镜像的使用,Docker容器连接等内容. 各种思维导图下载地址 Docker使用思维导图及各各种命令 Dock ...
- centos安装Qt
转:http://blog.csdn.net/wavelee/article/details/7855727 在编译Qt4.8.6版本的库时,在配置时 ./configure 出现了如下的错误: Ba ...
- sourcetree注册
http://www.cnblogs.com/xiofee/p/sourcetree_pass_initialization_setup.html
- VMware Workstation Pro下载
VMware Workstation Pro 下载地址:https://pan.baidu.com/s/1XXhFFh0Fx0vzvcd1A543Yg,提取码:2o19(下载得到的压缩包中含有 VMw ...
- shell脚本的使用该熟练起来了,你说呢?(篇一)
作者:良知犹存 转载授权以及围观:欢迎添加微信公众号:羽林君
- linux中在某个目录下多个文件中搜索关键字
有四种方法: find 文件目录 -name '*.*' -exec grep 'xxx' {} + -n 或是 find 文件目录 -name '*.*' | xargs grep 'xxx' -n ...
- Scrambled Polygon POJ - 2007 极角排序
题意: 给你n个点,这n个点可以构成一个多边形(但是不是按顺序给你的).原点(0,0)为起点,让你按顺序逆序输出所有点 题解: 就是凸包问题的极角排序 用double一直Wa,改了int就可以了 // ...
- 【uva 1515】Pool construction(图论--网络流最小割 模型题)
题意:有一个水塘,要求把它用围栏围起来,每个费用为b.其中,(#)代表草,(.)代表洞,把一个草变成洞需要费用d, 把一个洞变成草需要费用f.请输出合法方案中的最小费用. 解法:(不好理解...... ...
- poj 1410 (没做出来,记得闲着没事看看这道题)
听说这道题是个大大的坑题 结果wa了十多发,,,,还是没找到原因 #include<cstdio> #include<cmath> #include<algorithm& ...
- SpringBoot简单整合redis
Jedis和Lettuce Lettuce 和 Jedis 的定位都是Redis的client,所以他们当然可以直接连接redis server. Jedis在实现上是直接连接的redis serve ...