iOS开发项目实战——Swift实现ScrollView滚动条功能

手机作为一个小屏设备,需要显示的信息往往无法在一个屏幕上显示,此时就需要使用到滚动条,当然除了像TableView这样可以自带滚动功能的。如果一个界面上View较多,那就必须要使用到ScrollView了。现在我们将会使用Swift在iOS上实现滚动效果。具体实现如下:

(1)创建一个新的iOS项目,语言选择Swift,并在Main.storyboard中拖入一个ScrollView控件。然后在ScrollView中拖入几张照片,等下可以使用滚动功能查看照片,界面如下:

(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)最后运行结果如下:

其实ScrollView滚动条还有很多其他的属性设置和特性,有一部分也可以在storyboard中进行设置,是博大精深的,我们以后在开发中在慢慢学习。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-03 15:46:45

iOS开发项目实战——Swift实现ScrollView滚动条功能的相关文章

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

最近开始开发一个新的iOS应用,自己决定使用Swift,进行了几天之后,发现了一个很严峻的问题,那就是不管是书籍,还是网络资源,关于Swift的实在是太少了,随便一搜全都是OC实现某某某功能.就算是找到Swift的资源,一看,大概是半年前的代码,或是一年前的代码,一运行,全都报错.这是由于毕竟Swift还是在不断发展完善当中,随着Swift2.0的开源以来,包括发布Swift这一年多以来,Swift的改动还是很大的,很多的接口或是语法前后有较大差异.有些功能只能自己硬生生看官方文档或挤破脑子想,

iOS开发——项目实战Swift篇&swift 2.0项目开发总结二(开发常用)

swift 2.0项目开发总结二(开发常用) 一:相册中选择相片到App指定位置 随 着相机像素的提高,实际用户选择的图片都是很大的,有的高达5.6M,如果直接使用用户选着的图片,非常消耗内存,并且也用不到这么高像素的图片,可以当 用户选着好图片后,在UIImagePickerController对应的代理方法中,先将图片进行重新绘制为需要的大小,在设置给iconView 1 /// MARK: 摄像机和相册的操作和代理方法 2 extension MeViewController: UIIma

iOS开发——项目实战Swift篇&swift 2.0项目开发总结一(开发常用)

swift 2.0项目开发总结一(开发常用) 一:新特性(版本判断)的实现 1 let versionStr = "CFBundleShortVersionString" 2 let cureentVersion = NSBundle.mainBundle().infoDictionary![versionStr] as! String 3 let oldVersion = (NSUserDefaults.standardUserDefaults().objectForKey(vers

iOS开发——项目实战技术OC篇&XMPP简单总结

XMPP简单总结 最近面试被问到了一个问题,笔者当时就懵了:什么XMPP,平时怎么使用,使用过程中遇到什么问题?. 但是还是通过记忆,简单的说了一下自己所知道了,不过那并没有撒卵用,所以你懂的 XMPPFramework是一个OS X/iOS平台的开源项目,使用Objective-C实现了XMPP协议(RFC-3920),同时还提供了用于读写XML的工具,大大简化了基于XMPP的通信应用的开发. 1.关于连接的 1 //此方法在stream开始连接服务器的时候调用 2 - (void)xmppS

iOS开发——项目实战总结&警告消除

警告消除 前言:现在你维护的项目有多少警告?看着几百条警告觉得心里烦么?你真的觉得警告又不是错误可以完全不管么? 如果你也被这些问题困惑,可以和我一起进行下面的操作.其实大部分的警告都是很好改的,把自己整个项目的警告撸一遍应该也就耗费半小时的时间,一次麻烦带来之后的清净这样不好么? 本文分为三个部分: 1.简单粗暴的消除警告. 2.详细科学的消除警告.(包括警告收录) 3.添加警告. 一.简单粗暴的消除警告 警告如果是自己项目中的还好直接改了,如果是第三方库,你改了之后,pod下作者更新一下又白

iOS开发——项目实战总结&UITableView性能优化与卡顿问题

UITableView性能优化与卡顿问题 1.最常用的就是cell的重用, 注册重用标识符 如果不重用cell时,每当一个cell显示到屏幕上时,就会重新创建一个新的cell 如果有很多数据的时候,就会堆积很多cell.如果重用cell,为cell创建一个ID 每当需要显示cell 的时候,都会先去缓冲池中寻找可循环利用的cell,如果没有再重新创建cell 2.避免cell的重新布局 cell的布局填充等操作 比较耗时,一般创建时就布局好 如可以将cell单独放到一个自定义类,初始化时就布局好

iOS开发——项目实战总结&类微信朋友圈发动态功能初步-图片与视频上传

类微信朋友圈发动态功能初步-图片与视频上传 最近在做一个新的项目,涉及到了关于图片和视频上传和显示的功能,研究了一段时间,总结一下. 使用AFNetworking上传图片(可一次上传多张图片,包含不同类型png, jpeg)和视频 1 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 2 3 AFHTTPRequestOperation *operation = [manager P

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

经典错误一 No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=armv7, VA 运行报错 出现的原因:armv7s是应用在iPhone 5 A6 的架构上的 解决的方式: 1,在Project target里“Architectures”设置为“Standard (armv7,armv7s)” 2,修改在Project target里“Build Settings”的“Valid Architectures”添

iOS开发——项目实战总结&性能优化总结一

性能优化总结一 iOS应用是非常注重用户体验的,不光是要求界面设计合理美观,也要求各种UI的反应灵敏,我相信大家对那种一拖就卡卡卡的 TableView 应用没什么好印象.还记得12306么,那个速度,相信大家都受不了.为了提高 iOS 的运行速度,下面我将抛砖引玉介绍一些我实践过的用来提供iOS程序运行效率的方法,与大家分享,希望能得到更多的反馈和建议. 1,计算代码运行时间:相信数据,不要太相信感觉.不过要注意模拟器和真机的差异. 最简单的工具就是 NSDate,但精度不是太好. 1 NSD