Swift基础之两指拉动图片变大变小
我们在使用APP的时候,有时会发现有些图片可以通过两指进行放大、缩小,今天就实现这样的一种效果,比较简单,不喜勿喷。。。。
var imageVi:UIImageView! = nil
var myScrollV:UIScrollView! = nil
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
imageVi = UIImageView.init(image: UIImage.init(named: "liwu.jpg"))
setUpScrollView()
myScrollV.delegate = self
setZoomScaleFor(srollViewSize: myScrollV.bounds.size)
myScrollV.zoomScale = myScrollV.minimumZoomScale
recenterImage()
}
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
setZoomScaleFor(srollViewSize: myScrollV.bounds.size)
if myScrollV.zoomScale < myScrollV.minimumZoomScale {
myScrollV.zoomScale = myScrollV.minimumZoomScale
}
recenterImage()
}
private func recenterImage() {
let scrollViewSize = myScrollV.bounds.size
let imageViewSize = imageVi.frame.size
let horizontalSpace = imageViewSize.width < scrollViewSize.width ? (scrollViewSize.width - imageViewSize.width) / 2.0 : 0
let verticalSpace = imageViewSize.height < scrollViewSize.height ? (scrollViewSize.height - imageViewSize.width) / 2.0 :0
myScrollV.contentInset = UIEdgeInsetsMake(verticalSpace, horizontalSpace, verticalSpace, horizontalSpace)
}
private func setZoomScaleFor(srollViewSize: CGSize) {
let imageSize = imageVi.bounds.size
let widthScale = srollViewSize.width / imageSize.width
let heightScale = srollViewSize.height / imageSize.height
let minimunScale = min(widthScale, heightScale)
myScrollV.minimumZoomScale = minimunScale
myScrollV.maximumZoomScale = 3.0
}
private func setUpScrollView() {
myScrollV = UIScrollView(frame: view.bounds)
myScrollV.autoresizingMask = [.flexibleWidth, .flexibleHeight]
myScrollV.backgroundColor = UIColor.clear
myScrollV.contentSize = imageVi.bounds.size
myScrollV.addSubview(imageVi)
self.view.addSubview(myScrollV)
}
//MARK:---------UIScrollViewDelegate
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return self.imageVi
}
func scrollViewDidZoom(_ scrollView: UIScrollView) {
self.recenterImage()
}
效果图:(源码下载:https://github.com/hbblzjy/SwiftBigAndSmallDemo)
最新文章
- RHEL6.5 换源
- 【高性能服务器】Nginx剖析
- 使用struts+spring+hibernate组装web应用
- Android学习路线(六)为Android应用加入ActionBar
- Servlet 基础知识
- salesforce零基础学习(八十六)Ajax Toolkit (VF页面中使用及javascript action使用)
- 芝麻HTTP:Python爬虫实战之抓取淘宝MM照片
- 牛客挑战赛30 小G砍树 树形dp
- MapReduce 计数器简介
- linux的基本操作(正则表达式)
- iOS程序main函数之前发生了什么
- Day4作业及默写
- SLES 12 SP2 安装src.rpm软件包
- Vue的计算属性和侦听器
- c++ 算法 栅格中两点之间连线
- Vultr新推出3.5美元/月套餐,并且支持微信支付了
- Syntax error on token ";Invalid Regular Expression Options";, no accurate corr
- Hibernate中@Embedded和@Embeddable注解
- Python的ipython的安装
- 20145231熊梓宏《网络对抗》逆向及Bof基础
热门文章
- 认识JQuery,JQuery的优势、语法、多库冲突、JS原生对象和JQuery对象之间相互转换和DOM操作,常用的方法
- PHPCMS某处设计缺陷可致authkey泄露
- TopCoder SRM 558 Div 1 - Problem 1000 SurroundingGame
- 洛谷P2050 [NOI2012]美食节
- [bzoj4866] [Ynoi2017]由乃的商场之旅
- Cookie 和 Session的基本使用
- Unity脚本自动添加注释脚本及排版格式
- 移动端手势双击(MouseDown也可以在移动端响应,但是帧率太低)
- 自然语言处理工具:中文 word2vec 开源项目,教程,数据集
- jvm(二):内存管理