手机作为一个小屏设备,须要显示的信息往往无法在一个屏幕上显示,此时就须要使用到滚动栏,当然除了像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滚动栏功能的更多相关文章

  1. iOS开发项目实战——Swift实现图片轮播与浏览

    近期開始开发一个新的iOS应用,自己决定使用Swift.进行了几天之后,发现了一个非常严峻的问题.那就是无论是书籍,还是网络资源,关于Swift的实在是太少了,随便一搜全都是OC实现某某某功能.就算是 ...

  2. iOS开发——项目实战总结&经典错误一

    经典错误一 No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=armv7, VA 运行报错 出现的原因:armv7s ...

  3. IOS开发-项目实战-点赞功能的实现

    实现思路: 1.每一条新闻就是一个cell,在cell上添加点赞按钮. 2.让cell的控制器成为自定义cell的代理,将点击了哪一个cell放在代理方法中传出去. 3.并将这条新闻的ID和当前用户的 ...

  4. iOS开发——项目实战总结&Block使用注意点浅析

    Block使用注意点浅析 1.在使用block前需要对block指针做判空处理. 不判空直接使用,一旦指针为空直接产生崩溃. if (!self.isOnlyNet) { if (succBlock ...

  5. iOS开发——项目实战总结&带你看看Objective-C的精髓

    带你看看Objective-C的精髓 1:接口与实现 @interface...@end @implementation...@end @class 接口(头文件) 实现文件 向前引用 注:类别通过增 ...

  6. iOS开发——项目实战总结&关于随机量

    关于随机量 rand 是一个标准的 C 函数. random 是定义为 POSIX 标准的一部分. arc4random 是在 BSD 和派生平台. 随机数 arc4random_uniform(N) ...

  7. iOS开发——项目实战总结&数据持久化分析

    数据持久化分析 plist文件(属性列表) preference(偏好设置) NSKeyedArchiver(归档) SQLite 3 CoreData 当存储大块数据时你会怎么做? 你有很多选择,比 ...

  8. iOS开发——项目实战OC篇&类QQ黏性按钮(封装)

    类QQ粘性按钮(封装) 那个,先来说说原理吧: 这里原理就是,在界面设置两个控件一个按钮在上面,一个View在下面(同样大小),当我们拖动按钮的时候显示下面的View,view不移动,但是会根据按钮中 ...

  9. 李洪强iOS开发之后使用XIB实现横向滚动的UIScrollView

    李洪强iOS开发之后使用XIB实现横向滚动的UIScrollView 11111222

随机推荐

  1. Ueditor 七牛集成

    UEDITOR修改成功的 http://blog.csdn.net/uikoo9/article/details/41844747 http://blog.csdn.net/u010717403/ar ...

  2. UVA - 10167 - Birthday Cake (简单枚举)

    思路:简单枚举 AC代码: #include <cstdio> #include <cstring> #include <iostream> #include &l ...

  3. JavaScript中的*top、*left、*width、*Height具体解释

    来源:http://www.ido321.com/911.html html代码 1: <body> 2: <div class="father" id=&quo ...

  4. 细说 iOS 消息推送

    APNS的推送机制 与Android上我们自己实现的推送服务不一样,Apple对设备的控制很严格.消息推送的流程必需要经过APNs: 这里 Provider 是指某个应用的Developer,当然假设 ...

  5. Spring中事务的XML方式[声明方式]

    事务管理: 管理事务,管理数据,数据完整性和一致性 事务[业务逻辑] : 由一系列的动作[查询书价格,更新库存,更新余额],组成一个单元[买书业务], 当我们动作当中有一个错了,全错~ ACID 原子 ...

  6. 体验SUSE (附视频演示)

    操作动画演示 本文出自 "李晨光原创技术博客" 博客,谢绝转载!

  7. Js 栈和堆的实现

    一.队列和堆栈的简单介绍 1.1.队列的基本概念 队列:是一种支持先进先出(FIFO)的集合,即先被插入的数据,先被取出! 1.2.堆栈的基本概念 堆栈:是一种支持后进先出(LIFO)的集合,即后被插 ...

  8. HttpClient的基本使用

    HttpClient的基本使用 前言 HttpClient是Apache提供的一个用于在Java中处理HTTP请求.响应操作的工具,由于JDK自带的API对HTTP协议的支持不是很友好,使用起来也不是 ...

  9. 设计模式之十二:状态模式(State)

    状态模式: 当一个对象的内部状态发生变化时同意改变它的行为. Allow an object to alter its behavior when its internal state changes ...

  10. 《从零開始学Swift》学习笔记(Day 59)——代码排版

    原创文章,欢迎转载.转载请注明:关东升的博客 代码排版包括: 空行.空格.断行和缩进等内容.代码排版内容比較多工作量非常多.可是非常重要. 空行 空行将逻辑相关的代码段分隔开.以提高可读性. 下列情况 ...