手机作为一个小屏设备,须要显示的信息往往无法在一个屏幕上显示,此时就须要使用到滚动栏,当然除了像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绑定。绑定后代码例如以下:

  1. @IBOutlet weak var homepageScrollView: UIScrollView! //这个是滚动栏。
  2. @IBOutlet weak var image1: UIImageView!
  3. @IBOutlet weak var image2: UIImageView!
  4. @IBOutlet weak var image3: UIImageView!

(3)然后在viewDidLoad()方法中实现 滚动栏的代码,注意例如以下contentSize的使用,必须设置ScrollView的内容大小,界面才会有滚动效果,而且这个大小是能够自己随意输入的。你设置多大的长和宽,整个ScrollView就像画布。这个画布的大小就是多大。然后因为屏幕较小。仅仅能显示一部分,所以你就能够通过滑动查看其它未见的部分。

  1. override func viewDidLoad() {
  2. super.viewDidLoad()
  3.  
  4. //在滚动栏中添加View。
  5. homepageScrollView.addSubview(image1)//不断在ScrollView中加入子控件;
  6. homepageScrollView.addSubview(image2)
  7. homepageScrollView.addSubview(image3)
  8.  
  9. homepageScrollView.contentSize=CGSize(width: image1.bounds.size.width, height: image1.bounds.size.height+image2.bounds.size.height+image3.bounds.size.height+500)
  10. //注意要加入全部控件的高度到ScrollView中;也能够自己定义长和宽。
  11.  
  12. }

(4)执行程序。查看结果。

(5)可能会有人有疑问,我上面的图片都是直接加入到storyboard中的。都是写死的。我如今通过代码动态添加一张图片,而且加入到ScrollView中。以此来真正实现滚动栏的功能;

动态显示图片代码:

  1. //这里的“image4”是通过代码动态加入的。而不是在storyboard中写死的,加在image3以下。
  2. var imageView:UIImage = UIImage(named: "gallery4")!
  3. //gallery4是这张图片的名字,不须要扩展名;
  4. var image4:UIImageView = UIImageView(frame: CGRect(origin: CGPoint(x: 0,y: image1.bounds.size.height+image2.bounds.size.height+image3.bounds.size.height),
  5. size: image1.bounds.size))
  6. //设置这张图片的显示位置和大小。原图较大。我设置为和image1大小一样;
  7. image4.image = imageView

继续在ScrollView中添加这个View:

  1. homepageScrollView.addSubview(image4)

最后别忘了在contentSize中添加对应的长度:

  1. homepageScrollView.contentSize=CGSize(width: image1.bounds.size.width, height: image1.bounds.size.height+image2.bounds.size.height+image3.bounds.size.height+
  2. image4.bounds.size.height+500)//注意要加入全部控件的高度到ScrollView中;也能够自己定义长和宽;

所以最后整个类中的代码例如以下:

  1. class HomepageViewController: UIViewController,UIScrollViewDelegate{ //注意要实现这个Delegate托付。
  2.  
  3. @IBOutlet weak var homepageScrollView: UIScrollView! //这个是滚动栏;
  4. @IBOutlet weak var image1: UIImageView!
  5. @IBOutlet weak var image2: UIImageView!
  6. @IBOutlet weak var image3: UIImageView!
  7.  
  8. override func viewDidLoad() {
  9. super.viewDidLoad()
  10.  
  11. //这里的“image4”是通过代码动态加入的,而不是在storyboard中写死的。加在image3以下。
  12. var imageView:UIImage = UIImage(named: "gallery4")!
  13. //gallery4是这张图片的名字,不须要扩展名;
  14. var image4:UIImageView = UIImageView(frame: CGRect(origin: CGPoint(x: 0,y: image1.bounds.size.height+image2.bounds.size.height+image3.bounds.size.height),
  15. size: image1.bounds.size))
  16. //设置这张图片的显示位置和大小。原图较大,我设置为和image1大小一样;
  17. image4.image = imageView
  18.  
  19. //在滚动栏中添加View;
  20. homepageScrollView.addSubview(image1)//不断在ScrollView中加入子控件。
  21. homepageScrollView.addSubview(image2)
  22. homepageScrollView.addSubview(image3)
  23. homepageScrollView.addSubview(image4)
  24.  
  25. homepageScrollView.contentSize=CGSize(width: image1.bounds.size.width, height: image1.bounds.size.height+image2.bounds.size.height+image3.bounds.size.height+
  26. image4.bounds.size.height+500)//注意要加入全部控件的高度到ScrollView中。也能够自己定义长和宽;
  27.  
  28. }
  29.  
  30. override func didReceiveMemoryWarning() {
  31. super.didReceiveMemoryWarning()
  32. // Dispose of any resources that can be recreated.
  33. ///////////////////////////////////////////
  34. }
  35.  
  36. }

(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. reboot---重启Linux系统

    reboot命令用来重新启动正在运行的Linux操作系统. 语法 reboot(选项) 选项 -d:重新开机时不把数据写入记录文件/var/tmp/wtmp.本参数具有“-n”参数效果: -f:强制重 ...

  2. Webservice银行报文接口设计

      Preface: 合理的软件架构设计其好处是不言而喻的,系统具有清晰的软件结构,良好的可扩展性,类的职能单一明确,系统的复杂度底.此前的一个实际项目中总结了些关于OO设计的实际应用,主要是围绕'高 ...

  3. AutoCAD 许可管理器不起作用,或未正确安装,现在将关闭

    问题描述 重新安装了也还是这样,而且第二次打开都跳不出申请码界面就关闭了. 问题原因,初步认为:AutoCAD 在首次弹出申请激活类型的类型时,直接选择了网络激活,而且没有激活成功.再想通过激活码的方 ...

  4. 缩放文本框ExpandTextView

    效果图: 代码: import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import ...

  5. JXL.jar简单封装Excel读写操作

    1.分析 一个excel文件能够有多页,每页excel中能够有多行,每行中能够有多列.用面向对象的思想能够把一行中的某列看作是一个String对象,一行看作是一个包括多个列的对象.一页是包括多行的对面 ...

  6. Centos 6.8 安装 Protocol Buffers , v3.2.0有 BUG ,安装 3.1.0

    Centos 6.8 安装 Protocol Buffers   , v3.2.0有 BUG ,安装 3.1.0 切换到用户目录 cd ~ 安装 python2.7,须加入zlib wget http ...

  7. carousel轮播器

    <div id="myCarousel" class="carousel slide" data-ride="carousel" st ...

  8. LAN8720A网络模块的使用问题

    一.LAN8720A模块驱动电路 最近在调试STM32F4驱动LAN8720A网络模块,在做方案前参考是正点原子的LAN8720A的驱动电路方案,但是从网上买回来的LAN8720A模块用正点原子的例程 ...

  9. eclipse4.3怎么集成jadclipse追踪源代码,现在windows-preferences-java

      A.将net.sf.jadclipse_3.2.4.jar复制到D:\leaf\eclipse\plugins目录下.  B.在d:\leaf下建立ecliplsePlungin\jadclips ...

  10. canvas.toDataURL() gives “Security Error” in IE 11

    http://stackoverflow.com/questions/30101143/canvas-todataurl-gives-security-error-in-ie-11