iOS开发项目实战——Swift实现ScrollView滚动栏功能
手机作为一个小屏设备,须要显示的信息往往无法在一个屏幕上显示,此时就须要使用到滚动栏,当然除了像TableView这样能够自带滚动功能的。
假设一个界面上View较多,那就必须要使用到ScrollView了。如今我们将会使用Swift在iOS上实现滚动效果。详细实现例如以下:
(1)创建一个新的iOS项目。语言选择Swift,并在Main.storyboard中拖入一个ScrollView控件。然后在ScrollView中拖入几张照片,等下能够使用滚动功能查看照片。界面例如以下:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">。
(2)把ScrollView和几个ImageView拖拽与代码进行Outlet绑定。绑定后代码例如以下:
@IBOutlet weak var homepageScrollView: UIScrollView! //这个是滚动栏。
@IBOutlet weak var image1: UIImageView!
@IBOutlet weak var image2: UIImageView!
@IBOutlet weak var image3: UIImageView!
(3)然后在viewDidLoad()方法中实现 滚动栏的代码,注意例如以下contentSize的使用,必须设置ScrollView的内容大小,界面才会有滚动效果,而且这个大小是能够自己随意输入的。你设置多大的长和宽,整个ScrollView就像画布。这个画布的大小就是多大。然后因为屏幕较小。仅仅能显示一部分,所以你就能够通过滑动查看其它未见的部分。
override func viewDidLoad() {
super.viewDidLoad()
//在滚动栏中添加View。
homepageScrollView.addSubview(image1)//不断在ScrollView中加入子控件;
homepageScrollView.addSubview(image2)
homepageScrollView.addSubview(image3)
homepageScrollView.contentSize=CGSize(width: image1.bounds.size.width, height: image1.bounds.size.height+image2.bounds.size.height+image3.bounds.size.height+500)
//注意要加入全部控件的高度到ScrollView中;也能够自己定义长和宽。
}
(4)执行程序。查看结果。
。
。
(5)可能会有人有疑问,我上面的图片都是直接加入到storyboard中的。都是写死的。我如今通过代码动态添加一张图片,而且加入到ScrollView中。以此来真正实现滚动栏的功能;
动态显示图片代码:
//这里的“image4”是通过代码动态加入的。而不是在storyboard中写死的,加在image3以下。
var imageView:UIImage = UIImage(named: "gallery4")!
//gallery4是这张图片的名字,不须要扩展名;
var image4:UIImageView = UIImageView(frame: CGRect(origin: CGPoint(x: 0,y: image1.bounds.size.height+image2.bounds.size.height+image3.bounds.size.height),
size: image1.bounds.size))
//设置这张图片的显示位置和大小。原图较大。我设置为和image1大小一样;
image4.image = imageView
继续在ScrollView中添加这个View:
homepageScrollView.addSubview(image4)
最后别忘了在contentSize中添加对应的长度:
homepageScrollView.contentSize=CGSize(width: image1.bounds.size.width, height: image1.bounds.size.height+image2.bounds.size.height+image3.bounds.size.height+
image4.bounds.size.height+500)//注意要加入全部控件的高度到ScrollView中;也能够自己定义长和宽;
所以最后整个类中的代码例如以下:
class HomepageViewController: UIViewController,UIScrollViewDelegate{ //注意要实现这个Delegate托付。
@IBOutlet weak var homepageScrollView: UIScrollView! //这个是滚动栏;
@IBOutlet weak var image1: UIImageView!
@IBOutlet weak var image2: UIImageView!
@IBOutlet weak var image3: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
//这里的“image4”是通过代码动态加入的,而不是在storyboard中写死的。加在image3以下。
var imageView:UIImage = UIImage(named: "gallery4")!
//gallery4是这张图片的名字,不须要扩展名;
var image4:UIImageView = UIImageView(frame: CGRect(origin: CGPoint(x: 0,y: image1.bounds.size.height+image2.bounds.size.height+image3.bounds.size.height),
size: image1.bounds.size))
//设置这张图片的显示位置和大小。原图较大,我设置为和image1大小一样;
image4.image = imageView
//在滚动栏中添加View;
homepageScrollView.addSubview(image1)//不断在ScrollView中加入子控件。
homepageScrollView.addSubview(image2)
homepageScrollView.addSubview(image3)
homepageScrollView.addSubview(image4)
homepageScrollView.contentSize=CGSize(width: image1.bounds.size.width, height: image1.bounds.size.height+image2.bounds.size.height+image3.bounds.size.height+
image4.bounds.size.height+500)//注意要加入全部控件的高度到ScrollView中。也能够自己定义长和宽;
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
///////////////////////////////////////////
}
}
(6)最后执行结果例如以下:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">。
事实上ScrollView滚动栏还有非常多其它的属性设置和特性,有一部分也能够在storyboard中进行设置。是博大精深的。我们以后在开发中在慢慢学习。
github主页:https://github.com/chenyufeng1991 。
欢迎大家訪问!
iOS开发项目实战——Swift实现ScrollView滚动栏功能的更多相关文章
- iOS开发项目实战——Swift实现图片轮播与浏览
近期開始开发一个新的iOS应用,自己决定使用Swift.进行了几天之后,发现了一个非常严峻的问题.那就是无论是书籍,还是网络资源,关于Swift的实在是太少了,随便一搜全都是OC实现某某某功能.就算是 ...
- iOS开发——项目实战总结&经典错误一
经典错误一 No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=armv7, VA 运行报错 出现的原因:armv7s ...
- IOS开发-项目实战-点赞功能的实现
实现思路: 1.每一条新闻就是一个cell,在cell上添加点赞按钮. 2.让cell的控制器成为自定义cell的代理,将点击了哪一个cell放在代理方法中传出去. 3.并将这条新闻的ID和当前用户的 ...
- iOS开发——项目实战总结&Block使用注意点浅析
Block使用注意点浅析 1.在使用block前需要对block指针做判空处理. 不判空直接使用,一旦指针为空直接产生崩溃. if (!self.isOnlyNet) { if (succBlock ...
- iOS开发——项目实战总结&带你看看Objective-C的精髓
带你看看Objective-C的精髓 1:接口与实现 @interface...@end @implementation...@end @class 接口(头文件) 实现文件 向前引用 注:类别通过增 ...
- iOS开发——项目实战总结&关于随机量
关于随机量 rand 是一个标准的 C 函数. random 是定义为 POSIX 标准的一部分. arc4random 是在 BSD 和派生平台. 随机数 arc4random_uniform(N) ...
- iOS开发——项目实战总结&数据持久化分析
数据持久化分析 plist文件(属性列表) preference(偏好设置) NSKeyedArchiver(归档) SQLite 3 CoreData 当存储大块数据时你会怎么做? 你有很多选择,比 ...
- iOS开发——项目实战OC篇&类QQ黏性按钮(封装)
类QQ粘性按钮(封装) 那个,先来说说原理吧: 这里原理就是,在界面设置两个控件一个按钮在上面,一个View在下面(同样大小),当我们拖动按钮的时候显示下面的View,view不移动,但是会根据按钮中 ...
- 李洪强iOS开发之后使用XIB实现横向滚动的UIScrollView
李洪强iOS开发之后使用XIB实现横向滚动的UIScrollView 11111222
随机推荐
- 【DRF路由】
在urls.py文件中按照如下步骤写,即可正确使用DRF的内置路由. from .views import BookModel # 1. 导入我们的视图 from rest_framework.rou ...
- ifconfig---配置和显示Linux内核中网络接口
ifconfig命令被用于配置和显示Linux内核中网络接口的网络参数.用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在.要想将上述的配置信息永远的存的电脑里,那就要修改网卡 ...
- spark internal - 作业调度
作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 在Spark中作业调度的相关类 ...
- listview-fading 滚动条样式设置
fadingEdge-属性用来设置拉滚动条时 ,边框渐变的方向.它有三个属性值可以设置 none:(边框颜色不变) horizontal:(水平方向颜色变淡) vertical:(垂直方向颜色变淡). ...
- js 限制只能输入数字小数点
function checkNum(e) { var re = /^\d+(?=\.{0,1}\d+$|$)/ if (e.value != "") { if (!re.test( ...
- Java学习笔记三.2
5.继承 //Java中所有对象都显式/隐式的继承子Object类 class fu{ fu(){ System.out.println("fu..."+getNum()); sh ...
- JS数组排序技巧汇总(冒泡、sort、快速、希尔等排序)
本文实例总结了JS数组排序技巧.分享给大家供大家参考,具体如下: 1.冒泡排序 var temp = 0; for (var i = 0; i < array.length; i++) { fo ...
- Keil 编译环境之在线仿真调试问题
一.问题现象: 这几天刚开始上手STM32,使用Keil 环境进行编程,然后使用ULINK2进行在线仿真,在按键处理函数程序中设置断点,却发现按了按键程序没有停在设置的断点,程序正常运行,如下图所示, ...
- CISP/CISA 每日一题 14
CISA 每日一题(答) 自动无人值守运行(LIGHTS-OUT)优势:1.信息系统运行成本的遏制/减少:2.持续运行(24/7):3.减少系统错误和中断次数. I/O 控制人员负责保证:1.批处理信 ...
- Debian9 安装后的配置笔记
安装Debian9后,需要做的事,具体如下: 以下内容主要参考:https://www.cnblogs.com/OneFri/p/8308340.html感谢作者的分享. su 输入密码,登录root ...