网上参考OBJC写的用ScrollView图片轮播效果,照着画了个,先上效果图:

附上代码:

 @IBOutlet weak var pc: UIPageControl!
@IBOutlet weak var sv:UIScrollView! var timer:NSTimer! override func viewDidLoad() {
super.viewDidLoad() for i in ...{ //loading the images
let image = UIImage(named: "pic\(i).jpg")!
let x = CGFloat(i - ) * self.view.frame.width //这一步获取ScrollView的宽度时我用IPHONE6实体机测试是320,右边会出现第二张图片的一部分,最后还是用ROOT VIEW的宽度
var imageView = UIImageView(frame: CGRectMake(x, , self.view.frame.width, sv.bounds.height))
imageView.image = image
sv.pagingEnabled = true
sv.showsHorizontalScrollIndicator = false
sv.scrollEnabled = true
sv.addSubview(imageView)
sv.delegate = self
} sv.contentSize = CGSizeMake((self.view.frame.width * ), sv.frame.height)
pc.numberOfPages =
pc.currentPageIndicatorTintColor = UIColor.redColor()
pc.pageIndicatorTintColor = UIColor.whiteColor()
addTimer() } func scrollViewDidScroll(scrollView: UIScrollView) {
let width = self.view.frame.width
let offsetX = scrollView.contentOffset.x
let index = (offsetX + width / ) / width
pc.currentPage = Int(index)
} func scrollViewWillBeginDragging(scrollView: UIScrollView) {
removeTimer()
} func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool) {
addTimer()
} func addTimer() {
timer = NSTimer.scheduledTimerWithTimeInterval(, target: self, selector: "nextImage", userInfo: nil, repeats: true)
} func removeTimer() {
timer.invalidate()
} func nextImage() {
var pageIndex = pc.currentPage
if pageIndex == {
pageIndex =
} else {
pageIndex++
} var offsetX = CGFloat(pageIndex) * self.view.frame.width
sv.setContentOffset(CGPointMake(offsetX, ), animated: true)
}

SWIFT用ScrollView加图片制作Banner的更多相关文章

  1. 【Swift】swift中懒加载的写法

    swift中懒加载的写法,直接上例子 (懒加载一个遮罩视图) lazy var dummyView: UIView = { let v = UIView() v.backgroundColor = U ...

  2. Swift - 表格图片加载优化(拖动表格时不加载,停止时只加载当前页图片)

    列表的单元格中包含有图片在开发中很常见.通常我们可以直接在tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIn ...

  3. iOS开发项目实战——Swift实现ScrollView滚动栏功能

    手机作为一个小屏设备,须要显示的信息往往无法在一个屏幕上显示,此时就须要使用到滚动栏,当然除了像TableView这样能够自带滚动功能的. 假设一个界面上View较多,那就必须要使用到ScrollVi ...

  4. iOS swift 启动页加载广告(图片广告+视频广告)

    一般app在启动的时候都会有广告页,广告页用来加载自己的或者第三方的广告,广告的展示形式也多种多样,最近在看swift相关的东西,这里将提供支持加载图片广告和视频广告的解决方案 思路: 我们知道在加载 ...

  5. Swift中懒加载(lazy initialization)的实现

    Swift中是存在和OC一样的懒加载机制的,但是这方面国内的资料比较少,今天把搜索引擎换成了Bing后发现用Bing查英文\最新资料要比百度强上不少. 我们在OC中一般是这样实现懒加载初始化的: 1: ...

  6. NestedScrollView、ScrollView 加载完自动滑动至底部问题的解决方案

    正常情况下,由于NestedScrollView/ScrollView 嵌套RecyclerView,可能会导致Recyclerview占据焦点导致整个NestedScrollView/ScrollV ...

  7. 如何在SCENEKIT使用SWIFT RUNTIME动态加载COLLADA文件

    问题:今天接到一个项目,负责弄需求的美眉跟我讲能不能做一个原型能够加载Collada文件,流程如下: 用户用app下载Collada 压缩包(如内购项目) 压缩包解压 展示Collada文件里的内容 ...

  8. iOS开发——网络Swift篇&NSURLSession加载数据、下载、上传文件

    NSURLSession加载数据.下载.上传文件   NSURLSession类支持三种类型的任务:加载数据.下载和上传.下面通过样例分别进行介绍.   1,使用Data Task加载数据 使用全局的 ...

  9. Swift - 使用NSURLSession加载数据、下载、上传文件

    NSURLSession类支持三种类型的任务:加载数据.下载和上传.下面通过样例分别进行介绍. 1,使用Data Task加载数据 使用全局的sharedSession()和dataTaskWithR ...

随机推荐

  1. HDU 1711 Number Sequence(KMP模板)

    http://acm.hdu.edu.cn/showproblem.php?pid=1711 这道题就是一个KMP模板. #include<iostream> #include<cs ...

  2. python 将16进制转化为2进制

    >>> x='123abc' >>> b=bin())[:] >>> print(b)

  3. API接口自动化之2 处理http请求的返回体,对返回体做校验

    举例一个接口测试的常见流程 1) 发送接口请求2) 断言接口响应状态是不是200 OK3) 断言接口的响应时间低于某一个值(看情况,不是必选)4) 断言响应数据是否正确,一般的做法是判断某一个值是否相 ...

  4. Springboot mybatis generate 自动生成实体类和Mapper

    https://github.com/JasmineQian/SpringDemo_2019/tree/master/mybatis Springboot让java开发变得方便,Springboot中 ...

  5. 探索gff/gtf格式

    参考: GFF格式说明 Generic Feature Format Version 3 (GFF3) 先下载一个 gtf 文件浏览一下 1 havana gene 11869 14409 . + . ...

  6. pip 源 替换国内源

    网上收集来的pip源地址: 阿里云 http://mirrors.aliyun.com/pypi/simple/中国科技大学 https://pypi.mirrors.ustc.edu.cn/simp ...

  7. 库: rspec/rspec-expectations matcher匹配器常用

    https://github.com/rspec/rspec-expectations https://relishapp.com/rspec/rspec-expectations/v/3-7/doc ...

  8. 『Scrapy』爬取腾讯招聘网站

    分析爬取对象 初始网址, http://hr.tencent.com/position.php?@start=0&start=0#a (可选)由于含有多页数据,我们可以查看一下这些网址有什么相 ...

  9. 使用与不使用@RequestBody注解的区别

    1. 如果使用@RequestBody接受页面参数: public Map<String,Object> insertBudget(@ApiParam(required = true,na ...

  10. mysql导入导出数据过大命令

    phpmyadmin 导入或者导出都是有限制的,当导入或者导出的数据会报错. 1.导入数据库 mysql -u root -p<备份文件的保存路径 eg: mysql -u root -p &l ...