swift - UIScrollView 的使用
本节详细介绍scrollview的用法
————————————————————————————————————
UIScrollView 是一个能够滚动的视图控件,可以用来展示大量的内容,并且可以通过滚动查看所有的内容
UIScrollView 用法,将需要展示的内容添加到scrollview中
设置UIScrollView 的contentView属性,告诉UIScrollView所有内容的尺寸
1、初始化
let scrollView = UIScrollView()
var imageView = UIImageView()
var imageView2 = UIImageView()
var imageView3 = UIImageView()
var imageView4 = UIImageView()
2、创建scrollview,并确定好所需设置的属性
scrollView.delegate = self //设置代理
scrollView.frame = CGRect(x:,y:,width:self.view.frame.size.width,height:)//设置scrollview的大小
scrollView.backgroundColor = UIColor.white//设置背景颜色
scrollView.pagingEnabled = true //是否支持分页
scrollView.bounces = false //是否支持回弹效果
scrollView.showsVerticalScrollIndicator = false //垂直滑动线隐藏
scrollView.showsHorizontalScrollIndicator = false //水平滑动线隐藏
//scrollView.contentInset = UIEdgeInsetsMake(10, 10, 10, 10) //设置内边距
scrollView.contentSize = CGSize(width:self.view.frame.size.width * 3,height:0)
3、实现轮播的效果
1)添加图片
/***添加多张图片到scrollview里面***/ harray = ["2.jpg","3.jpg","4.jpg"] //所以这里切换成for循环的方式添加图片
for i in ..<harray.count { let hImageViews = UIImageView(image: UIImage(named:"\(i+2).jpg" ))
hImageViews.frame = CGRect(x:self.view.frame.size.width*CGFloat(i),y:0,width:self.view.frame.size.width,height:300)
scrollView.addSubview(hImageViews) } self.view.addSubview(scrollView)//一定不要忘记把scrollview添加到view上
2)实现轮播的效果
所需要注意的是:就是设置好所添加图片的frame,上面的代码写的很详细,大家可以参考!
效果图如下:
4、实现图片缩放的效果
1)创建scrollview,并添加图片
scrollView.delegate = self
scrollView.frame = self.view.bounds
let imageView = UIImageView(image:UIImage(named:"1.jpeg"))
scrollView.contentSize = imageView.bounds.size
scrollView.addSubview(imageView)
self.view.addSubview(scrollView)
scrollView.minimumZoomScale = 0.1
scrollView.maximumZoomScale = 5.0
2)实现一个代理方法,在此方法中指定需要缩放的子控件
func viewForZooming(in scrollView: UIScrollView) -> UIView? { for subView:AnyObject in scrollview.subviews {
if subView.isKind(of:UIImageView.self) {
return subView as? UIView
}
} return nil
}
效果图如下:
5、代理方法的作用
func scrollViewDidScroll(_ scrollView: UIScrollView) {
print("只要滚动了就会触发哦。")
} func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
print("开始拖拽视图")
} func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
print("结束滚动")
} func scrollViewWillBeginDecelerating(_ scrollView: UIScrollView) {
print("将开始降速时")
} func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
print("减速停止了时执行,手触摸时执行执行")
} func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView) {
print("滚动动画停止时执行,代码改变时触发,也就是setContentOffset改变时")
} func scrollViewDidEndZooming(_ scrollView: UIScrollView, withView view: UIView?, atScale scale: CGFloat) {
print("完成放大缩小时调用")
}
上面的方法都备注了什么时候执行,很清楚,大家可以试试!
最后,上传一张网络上的图片:
swift - UIScrollView 的使用的更多相关文章
- iOS程序-UIScrollView的基本使用
iOS程序-UIScrollView的基本使用 scrollView的几个属性contentSize contentOffset contentInset 1.不能向上滑动很可能是因为contentS ...
- Swift - 用UIScrollView实现视差动画效果
Swift - 用UIScrollView实现视差动画效果 效果 源码 https://github.com/YouXianMing/Swift-Animations // // MoreInfoVi ...
- iOS开发——UI篇Swift篇&UIScrollView
UIScrollView //返回按钮事件 @IBAction func backButtonClick() { self.navigationController?.popViewControlle ...
- Swift - 滚动视图(UIScrollView)的用法
1,当图片尺寸超过屏幕时,使用UIScrollView可以实现滚动条视图,即手指触摸滚动屏幕方便浏览整个页面. 1 2 3 4 5 6 var scrollView=UIScrollView() sc ...
- Swift - 使用UIScrollView实现页面滚动切换
UIScrollView提供了以页面为单位滚动显示各个子页面内容的功能,每次手指滑动后会滚动一屏的内容. 要实现该功能,需要如下操作: 1,将UIScrollView的pagingEnabled属 ...
- swift 实践- 14 -- UIScrollView
import UIKit class ViewController: UIViewController ,UIScrollViewDelegate{ override func viewDidLoad ...
- swift开发之 -- 自动轮播图(UIScrollView+UIPageControl+Timer)
比较简单,原理就不说了,这里只做记录: 代码如下: 1,准备 var pageControl:UIPageControl? var myscrollView:UIScrollView? var myT ...
- iOS开发之三个Button实现图片无限轮播(参考手机淘宝,Swift版)
这两天使用Reveal工具查看"手机淘宝"App的UI层次时,发现其图片轮播使用了三个UIButton的复用来实现的图片循环无缝滚动.于是乎就有了今天这篇博客,看到“手机淘宝”这个 ...
- Swift学习之熟悉控件
最近是比较清闲一些的,对于一个开发者来说,这也是一个很好的充电机会.以前做项目都是使用Objective-C去开发,但我们都知道,Swift语言从2014年的出现到现在,一步一步变的完善,渐渐变的受欢 ...
随机推荐
- C++面向对象程序设计的一些知识点(3)
摘要:多态性提供一组统一的调用接口函数,依据这些条用接口函数具体对象的不同,同一名字的函数会有不同的行为. 1.重载与隐藏 (1).对同一作用域中的同名函数,如果它们的函数特征标不同,那么它们就形成一 ...
- postgres入门介绍
mysql被oricle公司收购以后,PG就成了比较流行的开源数据库的首选,而且heroku上面不支持mysql,但是却大力支持PG,所以说,不得不学学PG,并非迫不得已的样子,至少以后PG会比较流行 ...
- 装饰者模式——(head first 设计模式3)
装饰者模式定义 装饰者模式动态的将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案. 从定义来看,除了提到比继承更有弹性,其他的还是非常模糊,下面就先给出其UML类图. 从UML类 ...
- Java并发(零)教程目录
上网看博客的时候无意中发现了有一个Java并发的教程还不错,有20多篇讲并发的,一天翻译1篇似乎也不太难.Let's go! 原文地址:http://tutorials.jenkov.com/java ...
- [wifi]wifi模块的测试
罗德斯瓦茨 非信令CMW100,信令CMW270,CMW500 支持多通道 具体如何多通道接相同的SSID,要看被测设备的变成 ublox是否支持非信令,需要check,信令和芯片没有关系,只和协议有 ...
- HAProxy+Varnish+LNMP实现高可用负载均衡动静分离集群部署
HAProxy高可用负载均衡集群部署 基本信息: 系统平台:VMware WorkStation 系统版本: CentOS Linux release 7.2.1511 (Core) 内核版本: 3. ...
- windows和Linux查看端口占用进程并关闭
Windows: 以端口8080为例: 1.查找对应的端口占用的进程:netstat -aon|findstr "8080" ,找到占用8080端口对应的程序的PID号: ...
- Android Studio:Multiple dex files define Landroid/support/annotation/AnimRes
近期真的比較忙,一不小心博客又荒了两个月. 从今天起.决定重返csdn,多多纪录和分享. 先从一个近期被折磨的死去活来的问题. 由于升级了V4包,就一直报这个问题: com.android.dex.D ...
- java-jdbc循环设置sql参数
PreparedStatement sta=null; Connection conn=null; @Test public void Test2() { //获取连接池 ComboPooledDat ...
- CI循环数组问题
当我们在Controll中把数据传递到view中如: $data['cates_data']=$this->Category_Model->byid_data($id); #调用模型层查询 ...