Swift - 页控件(UIPageControl)的用法
使用页控件可以用来展示多个桌面。比如很多应用第一次登陆时,会在开始页面使用页控件来介绍功能,通过左右滑动来切换页。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
import UIKit class ViewController : UIViewController , UIScrollViewDelegate { //界面设计元素引用 @IBOutlet var pageControl: UIPageControl ! @IBOutlet var scrollView: UIScrollView ! //需要显示的页面内容 var courses = [ [ "name" : "Swift" , "pic" : "swift.png" ], [ "name" : "ObjectC" , "pic" : "oc.jpg" ], [ "name" : "Java" , "pic" : "java.png" ] ] override func viewDidLoad() { super .viewDidLoad() // Do any additional setup after loading the view, typically from a nib. //设置scrollView的内容总尺寸 scrollView.contentSize = CGSizeMake ( CGFloat ( CGRectGetWidth ( self .view.bounds)) * CGFloat ( self .courses.count), CGRectGetHeight ( self .view.bounds) ) //关闭滚动条显示 scrollView.showsHorizontalScrollIndicator = false scrollView.showsVerticalScrollIndicator = false scrollView.scrollsToTop = false //协议代理,在本类中处理滚动事件 scrollView.delegate = self //滚动时只能停留到某一页 scrollView.pagingEnabled = true //添加页面到滚动面板里 let size = scrollView.bounds.size for (seq,course) in enumerate (courses) { var page = UIView () var imageView= UIImageView (image: UIImage (named:course[ "pic" ]!)) page.addSubview(imageView); page.backgroundColor = UIColor .greenColor() let lbl = UILabel (frame: CGRect (x: 0, y: 20, width: 100, height: 20)) lbl.text = course[ "name" ] page.addSubview(lbl) page.frame = CGRect (x: CGFloat (seq) * size.width, y: 0, width: size.width, height: size.height) scrollView.addSubview(page) } //页控件属性 pageControl.backgroundColor = UIColor .clearColor() pageControl.numberOfPages = courses.count pageControl.currentPage = 0 //设置页控件点击事件 pageControl.addTarget( self , action: "pageChanged:" , forControlEvents: UIControlEvents . ValueChanged ) } override func didReceiveMemoryWarning() { super .didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } //UIScrollViewDelegate方法,每次滚动结束后调用 func scrollViewDidEndDecelerating(scrollView: UIScrollView !) { //通过scrollView内容的偏移计算当前显示的是第几页 let page = Int (scrollView.contentOffset.x / scrollView.frame.size.width) //设置pageController的当前页 pageControl.currentPage = page } //点击页控件时事件处理 func pageChanged(sender: UIPageControl ) { //根据点击的页数,计算scrollView需要显示的偏移量 var frame = scrollView.frame frame.origin.x = frame.size.width * CGFloat (sender.currentPage) frame.origin.y = 0 //展现当前页面内容 scrollView.scrollRectToVisible(frame, animated: true ) } } |
--- Main.storyboard ---
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
<? xml version = "1.0" encoding = "UTF-8" standalone = "no" ?> < document type = "com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version = "3.0" toolsVersion = "6154.21" systemVersion = "13D65" targetRuntime = "iOS.CocoaTouch" propertyAccessControl = "none" useAutolayout = "YES" useTraitCollections = "YES" initialViewController = "BYZ-38-t0r" > < dependencies > < plugIn identifier = "com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version = "6153.13" /> </ dependencies > < scenes > <!--View Controller--> < scene sceneID = "tne-QT-ifu" > < objects > < viewController id = "BYZ-38-t0r" customClass = "ViewController" customModule = "SwiftInAction_008_019" customModuleProvider = "target" sceneMemberID = "viewController" > < layoutGuides > < viewControllerLayoutGuide type = "top" id = "y3c-jy-aDJ" /> < viewControllerLayoutGuide type = "bottom" id = "wfy-db-euE" /> </ layoutGuides > < view key = "view" contentMode = "scaleToFill" id = "8bC-Xf-vdC" > < rect key = "frame" x = "0.0" y = "0.0" width = "480" height = "480" /> < autoresizingMask key = "autoresizingMask" widthSizable = "YES" heightSizable = "YES" /> < subviews > < scrollView clipsSubviews = "YES" multipleTouchEnabled = "YES" contentMode = "scaleToFill" fixedFrame = "YES" translatesAutoresizingMaskIntoConstraints = "NO" id = "MQq-Dc-kWf" > < rect key = "frame" x = "0.0" y = "20" width = "320" height = "460" /> </ scrollView > < pageControl opaque = "NO" contentMode = "scaleToFill" fixedFrame = "YES" contentHorizontalAlignment = "center" contentVerticalAlignment = "center" numberOfPages = "3" translatesAutoresizingMaskIntoConstraints = "NO" id = "Rre-R2-IHS" > < rect key = "frame" x = "150" y = "339" width = "60" height = "37" /> < color key = "pageIndicatorTintColor" white = "0.66666666666666663" alpha = "1" colorSpace = "calibratedWhite" /> </ pageControl > </ subviews > < color key = "backgroundColor" white = "1" alpha = "1" colorSpace = "custom" customColorSpace = "calibratedWhite" /> < simulatedOrientationMetrics key = "simulatedOrientationMetrics" orientation = "landscapeRight" /> </ view > < connections > < outlet property = "pageControl" destination = "Rre-R2-IHS" id = "R3n-tp-UIl" /> < outlet property = "scrollView" destination = "MQq-Dc-kWf" id = "scK-rG-Yia" /> </ connections > </ viewController > < placeholder placeholderIdentifier = "IBFirstResponder" id = "dkx-z0-nzr" sceneMemberID = "firstResponder" /> </ objects > </ scene > </ scenes > </ document > |
Swift - 页控件(UIPageControl)的用法的更多相关文章
- iOS:分页控件UIPageControl的使用
分页控件:UIPageControl 功能:通常搭配滚动视图一起使用,设置pagingEnabled=YES即可,UIScrollView会被分割成多个独立页面,用户的滚动体验则变成了页面翻转,一 ...
- Atitti usrQBf1801 翻页控件规范 v2
Atitti usrQBf1801 翻页控件规范 v2 1. 参考api 参考easyui ,.net系列的1 1.1. 翻页流程 初始化翻页控件,以及绑定新页面event onSelectPa ...
- MFC ActiveX新增属性页 控件不响应
在Activex中可以添加自定义的属性页,在新的属性页上添加一个button控件,设置好响应函数后,测试时发现点击button没有响应. 对比之前的主属性页发现,新增属性页的属性“Disabled” ...
- 023.MFC_属性页控件(tab control)
属性页控件属性页->选项卡->对话框CTabCtrl一.建立名为tabCtrl的mfc工程,添加Tab Control控件,设置属性ID为IDC_TAB,并添加变量m_tab 在tabCt ...
- Swift - 图像控件(UIImageView)的用法
1,使用图像控件显示图片 1 2 3 var imageView=UIImageView(image:UIImage(named:"icon")) imageView.frame= ...
- Swift UI控件详细介绍(上)
UI控件 首先介绍一下AppDelegate.swift@UIApplicationMain 调用了OC中的UIApplicationMain函数:UIApplicationMain是iOS应用程序的 ...
- DevExpress 控件 GridControl常见用法
刚接触DevExpress第三方控件,把GridControl的常见用法整理一下,以供参考: 说明: gcTest GridControl gvText GridView //隐藏最上面的G ...
- Repeater控件的详细用法
中隔行(交替项)呈现一次.通过设置 AlternatingItemTemplate 元素的样式属性,可以为其指定不同的外观. FooterTemplate在所有数据绑定行呈现之后呈现一次的元素.典型的 ...
- Webdriver控制翻页控件,并实现向前向后翻页功能,附上代码,仅供参考,其他类似日期控件的功能可以自己封装
新增输入与选择页面的html源码: <div style="margin-top:-60px;" class="modal-content" id=&qu ...
随机推荐
- mac下的应用程序发布 及 打包(Python写的脚本,可打包第三方库)
其实这个问题在网上能搜到大把的解决方案.大家的统一答案都是 otool -L yourapp.app/Contents/MacOS/yourapp 根据输出信息在运行 install_name_too ...
- WCF技术剖析之二十九:换种不同的方式调用WCF服务[提供源代码下载]
原文:WCF技术剖析之二十九:换种不同的方式调用WCF服务[提供源代码下载] 我们有两种典型的WCF调用方式:通过SvcUtil.exe(或者添加Web引用)导入发布的服务元数据生成服务代理相关的代码 ...
- Maven和Eclipse联合开发(转)
最近公司突然把以前的架构推到从来,这个还真需要勇气,不过也是的,基础不好,再好的房子也站不稳.公司采用Maven作为项目管理,WebService项目框架采用SDHI.(Spring+Dubbo+He ...
- Spring源码解析——如何阅读源码(转)
最近没什么实质性的工作,正好有点时间,就想学学别人的代码.也看过一点源码,算是有了点阅读的经验,于是下定决心看下spring这种大型的项目的源码,学学它的设计思想. 手码不易,转载请注明:xingoo ...
- 基于visual Studio2013解决C语言竞赛题之0613递归求积
题目
- Java基础08 继承
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 继承(inheritance)是面向对象的重要概念.继承是除组合(composit ...
- 用c++开发基于tcp协议的文件上传功能
用c++开发基于tcp协议的文件上传功能 2005我正在一家游戏公司做程序员,当时一直在看<Windows网络编程> 这本书,把里面提到的每种IO模型都试了一次,强烈推荐学习网络编程的同学 ...
- bootstrap datatable项目封装支持单选多选
自己在开发项目是根据自己的项目后台框架封装的jquery datatable插件基本上能集成到任何项目中使用,当然封装的还不够完美,给大家学习 调侃 使用介绍:query_dataTable({tab ...
- MyEclipse弹出提示窗体
MyEclipse弹出提示窗体 1.弹窗例如以下
- MSSQL - SqlDataAdapter连接数据库提高性能用法
SqlDataAdapter 与 SqlConnection 和 SqlCommand 一起使用,以便在连接到 SQL Server 数据库时提高性能. SqlDataAdapter 的这一实现自动打 ...