微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

swift中UIScrollView的使用结合pageControl,timer计时的使用

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,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)),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
}

原文地址:https://www.jb51.cc/swift/322744.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐