swift中UIScrollView的使用(结合pageControl,timer计时的使用)
来源:互联网 发布:手机游戏交易平台源码 编辑:程序博客网 时间:2024/04/29 07:41
github学习地址:https://github.com/potato512/SYSwiftLearning
效果图
关键源码
func setUI(){ self.setScrollViewUI() self.setPageControlUI()}
func setScrollViewUI(){ self.mainScrollView = UIScrollView(frame: CGRectMake(0.0, 0.0, CGRectGetWidth(self.view.bounds), 200.0)) // 添加到父视图 self.view.addSubview(self.mainScrollView) // 添加子视图label var originX:CGFloat = 0.0 for number in 1...10 { let label = UILabel(frame: CGRectMake(originX, 0.0, CGRectGetWidth(self.mainScrollView.bounds), CGRectGetHeight(self.mainScrollView.bounds))) self.mainScrollView.addSubview(label) label.backgroundColor = UIColor(red: CGFloat(CGFloat(random()) / CGFloat(RAND_MAX)), green: CGFloat(CGFloat(random()) / CGFloat(RAND_MAX)), blue: CGFloat(CGFloat(random()) / CGFloat(RAND_MAX)), alpha: 1.0) label.textAlignment = .Center label.text = String(format: "scrollView add 第 %ld 个 label", arguments: [number]); originX = (CGRectGetMinX(label.frame) + CGRectGetWidth(label.frame)) } // 背景颜色 self.mainScrollView.backgroundColor = UIColor(red: CGFloat(CGFloat(random()) / CGFloat(RAND_MAX)), green: CGFloat(CGFloat(random()) / CGFloat(RAND_MAX)), blue: CGFloat(CGFloat(random()) / CGFloat(RAND_MAX)), alpha: 1.0) // 自适应父视图 // self.mainScrollView.autoresizingMask = UIViewAutoresizing.FlexibleHeight // 其他属性 self.mainScrollView.scrollEnabled = true // 可以上下滚动 self.mainScrollView.scrollsToTop = true // 点击状态栏时,可以滚动回顶端 self.mainScrollView.bounces = true // 在最顶端或最底端时,仍然可以滚动,且释放后有动画返回效果 mainScrollView.pagingEnabled = true // 分页显示效果 mainScrollView.showsHorizontalScrollIndicator = true // 显示水平滚动条 mainScrollView.showsVerticalScrollIndicator = true // 显示垂直滚动条 mainScrollView.indicatorStyle = UIScrollViewIndicatorStyle.White // 滑动条的样式 // 设置内容大小 self.mainScrollView.contentSize = CGSizeMake(originX, 200.0) // 代理 self.mainScrollView.delegate = self}
func setPageControlUI(){ self.mainPageControl = UIPageControl(frame: CGRectMake((CGRectGetWidth(self.view.bounds) - 200.0) / 2, (CGRectGetHeight(self.mainScrollView.bounds) - 20.0 - 10.0), 200.0, 20.0)) // 添加到父视图 self.view.addSubview(self.mainPageControl) // 背景颜色 self.mainPageControl.backgroundColor = UIColor.lightGrayColor() // 其他属性设置 self.mainPageControl.numberOfPages = 10 // 总页数 self.mainPageControl.currentPage = 0 // 当前页数,默认为0,即第一个,实际数量是0~n-1 self.mainPageControl.pageIndicatorTintColor = UIColor.yellowColor() // 非当前页颜色 self.mainPageControl.currentPageIndicatorTintColor = UIColor.redColor() // 当前页颜色}
// MARK: - UIScrollViewDelegate func scrollViewWillBeginDragging(scrollView: UIScrollView){ print("1 scrollViewWillBeginDragging")} func scrollViewDidScroll(scrollView: UIScrollView){ print("2 scrollViewDidScroll")}func scrollViewWillEndDragging(scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>){ print("3 scrollViewWillEndDragging")} func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool){ print("4 scrollViewDidEndDragging")} func scrollViewWillBeginDecelerating(scrollView: UIScrollView){ print("5 scrollViewWillBeginDecelerating")}func scrollViewDidEndDecelerating(scrollView: UIScrollView){ print("6 scrollViewDidEndDecelerating") let width = CGRectGetWidth(scrollView.frame) let offsetX = scrollView.contentOffset.x let index = offsetX / width print("当前页是:\(index)") self.mainPageControl.currentPage = Int(index)}
// MARK: - timer周期 override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) self.addTimer()} override func viewWillDisappear(animated: Bool) { super.viewWillDisappear(animated) self.removerTimer()}
// MARK: - timer func addTimer(){ self.mainTimer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector("autoShow"), userInfo: nil, repeats: true) } func removerTimer() { if self.mainTimer != nil { self.mainTimer.invalidate() self.mainTimer = nil }} func autoShow(){ var page = self.mainPageControl.currentPage if 9 == page { page = 0 } else { page++ } // 设置偏移量 let offsetX = CGFloat(page) * CGRectGetWidth(self.mainScrollView.frame) self.mainScrollView.setContentOffset(CGPointMake(offsetX, 0.0), animated: true) self.mainPageControl.currentPage = page}
0 0
- swift中UIScrollView的使用(结合pageControl,timer计时的使用)
- UIScrollView和自定义PageControl的结合使用
- ios-runtime(swift)使用,修改pageControl的小圆点
- swift中UIScrollView的使用(图片缩放)
- UIScrollView,UIPageControl的结合使用
- swift UIScrollview 的基本使用
- Delphi 中 RadioGroup / pagecontrol 的使用
- (九)UIScrollView和PageControl的分页
- swift定时器(Timer)的使用
- 在Swift语言中UIScrollView的基本使用。
- WinForm程序中多线程与Timer的结合使用
- UIPageControl与UIScrollView的结合使用
- UIPageView和UIScrollView的结合使用
- UI UIScrollView和UIPageControl的结合使用
- swift中UIScrollView的使用(常规使用,以及contentInset属性设置)
- swift 3.0 计时器Timer 的使用
- 重新计时的Timer
- scrollView和pageControl的搭配使用
- 替换原则(LSP - Liskov Substitution Principle)
- Java NIO框架Netty教程(四) – ServerBootStrap启动流程源码分析
- java对象存活判断
- OpenGL缓冲区对象之VBO
- 关于持久化
- swift中UIScrollView的使用(结合pageControl,timer计时的使用)
- adb 相关调试
- IDA __PAIR__
- 单例模式java中的几种写法和确保多线程下安全
- Linux/Unix目录结构的来历
- JAVA NIO 简介
- qt之文档编辑器
- 64位CentOS安装缺少32位库问题最有效的办法
- Python菜鸟--条件语句