IOS控件学习之UI ScrollView(7)
来源:互联网 发布:阿里巴巴微商软件 编辑:程序博客网 时间:2024/04/28 05:43
1、语言:swift
2、实现内容:图片轮播(把之前的总结下)
3、效果图:
4、控件列表(见下图):
5、注意
pageControl控件不能直接拖到scrollView控件中。从上图左边的结构中可以看出,pageControl控件与scrollView控件是在同一个级下。
我的方法是:将pageControl控件拖到ScrollView控件同一级下,通过调整其坐标和大小设置到ScrollView控件上。
6、图片轮播源码示例:
import UIKitclass ViewController: UIViewController,UIScrollViewDelegate { /// 控件关联 @IBOutlet weak var scrollView: UIScrollView! @IBOutlet weak var pageControl: UIPageControl! var imageView:UIImageView!; /// 定时器 var timer:NSTimer?; /// var flag:Bool! = false; override func viewDidLoad() { super.viewDidLoad() //=========== scrollView属性设置 =============// ///创建 addSubImageViewInScrollView(); /// 设置滚动属性,宽度为 5个图片的总宽度 之和. 高度,我的素材是80X80的,高度= 80 scrollView.contentSize = CGSizeMake(5 * scrollView.frame.size.width, 80); /// 设置以页单位滚动 scrollView.pagingEnabled = true; /// 隐藏横向滚动条 scrollView.showsHorizontalScrollIndicator = false; //=========== pageControl属性设置 =============// /// 设置默认显示的是第0页 pageControl.currentPage = 0; /// 设置pagecontrol的总页数(这里,我只准备了5张图) pageControl.numberOfPages = 5; /// 创建定时器 createTimer(); } /// 创建一个定时器 func createTimer() { /// 创建一个定时器,创建好后,自动启动 timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: "scrollImage", userInfo: nil, repeats: true); } /// timer执行代码,定时器中指定,每秒滚动一次图片 func scrollImage() { /// 如何让UIScrollView滚动到下一页 /// 1、获取当前的UIPageControl 的页码 var curPage = pageControl.currentPage; /// 2、判断是否到了最后一页? 若到了最后一页,回到第一页,若没有,则在当前页码上+1 if (pageControl.numberOfPages - 1 == curPage) { curPage = 0 } else { curPage++; }// /// 正向滚动// if (false == flag)// {// if (pageControl.numberOfPages - 1 == curPage)// {// curPage -= 1;// /// print("当前是反向第\(curPage)页")// flag = true;// }// else// {// curPage += 1;// /// print("当前是正向第\(curPage)页");// flag = false;// }// }// if (true == flag) /// 反向滚动// {// if (0 == curPage)// {// curPage += 1;// /// print("当前是正向第\(curPage)页")// flag = false;// }// else// {// curPage -= 1;// /// print("当前是反向第\(curPage)页")// flag = true;// }// } /// 3、每页的宽度 X (页码+1) == 计算出了下一页的contentOffset.X let offsetX = CGFloat(curPage) * scrollView.frame.size.width; /// 4、重新设置 contentOffset的值 scrollView.setContentOffset(CGPointMake(offsetX, 0), animated: true); } /// 创建5 * imageview func addSubImageViewInScrollView() { for i in 0 ..< 5 { imageView = UIImageView(frame: CGRectMake(CGFloat(i * 80), 0, scrollView.frame.size.width, scrollView.frame.size.height)); /// 我准备的素材的图片名字是从2开始的 imageView.image = UIImage(named: "\(Int(i + 2)).png"); /// 把imageview添加到scrollview中 scrollView.addSubview(imageView); } } /// 即将滚动 func scrollViewWillBeginDragging(scrollView: UIScrollView) { timer = nil; } /// 开始滚动,获取当前滚动到哪一页了 func scrollViewDidScroll(scrollView: UIScrollView) { /* 计算公式为:x 方向上的偏移除以每张拖片的大小,商就是当前滚动到哪一页了。 */ let curPage = scrollView.contentOffset.x / scrollView.frame.size.width; /// 设置页码给pageControl pageControl.currentPage = Int(curPage); } /// 滚动结束 func scrollViewDidEndDecelerating(scrollView: UIScrollView) { createTimer(); } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. }}<span style="font-size:12px;color:#3333ff;"></span>
7、说明
A、事先准备好数张图片,大小最好是一样的嘛----美观
B、我准备的素材名称是从2开始的,所以在代码中才会有:
/// 我准备的素材的图片名字是从2开始的 imageView.image = UIImage(named: "\(Int(i + 2)).png");C、pageControl.currentPage默认是从 0 开始的。
0 0
- IOS控件学习之UI ScrollView(7)
- IOS控件学习之UI ScrollView(6)
- cocos2d-C++ 学习UI控件(三)之 LoadingBar|ScrollView
- UI控件之ScrollView
- UI控件之ScrollView(滚动条)
- Android控件之ScrollView学习
- iOS UI控件学习---swift(一)
- 初入IOS之UI控件学习 UITableView
- ios学习之UI控件的一些基本使用
- IOS之基本UI控件
- Ios开发之UI控件
- IOS之基本UI控件
- iOS UI控件之----UIButton
- iOS学习之UI
- iOS笔记UI--scrollview
- iOS学习总结之UI框架UI之文本输入控件( UITextField)
- Unity UI(七):交互式控件之Scroll Rect和ScrollView
- IOS UI学习 ScrollView中Touch事件作用子视图
- Intervals
- 地宫取宝 (DFS+记忆化)
- java内存泄漏
- WPF-样式的定义和使用
- linux基本知识
- IOS控件学习之UI ScrollView(7)
- Bitmap的小知识
- HDOJ 1093 A+B for Input-Output Practice (V)
- 后缀数组
- codevs 1690 开关灯
- hadoop 2.6 伪分布式的安装
- 贪吃——1006 电梯问题
- Socket基础知识
- 关于活着的思考