swift TabBarController UINavigationController 组合使用 带有ScrollView和菜单内容以及tableView

来源:互联网 发布:nginx 下载 编辑:程序博客网 时间:2024/05/18 21:10

内容接上一篇0 0才知道内容有限

第一个为定义的轮播图的代码内容为继承重写了关于UITableViewCell的内容

import UIKitclass ScrollImage: UITableViewCell , UIScrollViewDelegate {        let SCREEN_WIDTH = UIScreen.mainScreen().bounds.size.width        var scrollView: UIScrollView?    var pageController: UIPageControl?    var timer: NSTimer?        override init(style: UITableViewCellStyle, reuseIdentifier: String?) {        super.init(style: style, reuseIdentifier: reuseIdentifier)                scrollView = UIScrollView(frame: CGRectMake(0,0,SCREEN_WIDTH,180))        scrollView?.contentSize = CGSizeMake(4 * SCREEN_WIDTH ,  180)        scrollView?.pagingEnabled = true        scrollView?.delegate = self        scrollView?.showsHorizontalScrollIndicator = false                for i in 0  ..< 4  {            let imageView = UIImageView(frame: CGRectMake(CGFloat(i) * SCREEN_WIDTH, 0, SCREEN_WIDTH, 180))            imageView.image = UIImage(named: "DEEMO\(i + 1)")            imageView.tag = i + 10            scrollView?.addSubview(imageView)        }                pageController = UIPageControl(frame: CGRectMake(SCREEN_WIDTH / 2 - 20, 160 , 0 , 20))        pageController?.currentPage = 0        pageController?.numberOfPages = 4        pageController?.currentPageIndicatorTintColor = UIColor.blackColor()        pageController?.pageIndicatorTintColor = UIColor.grayColor()                self.addSubview(scrollView!)        self.addSubview(pageController!)    }        required init?(coder aDecoder: NSCoder) {        fatalError("init(coder:) has not been implemented")    }    override func setSelected(selected: Bool, animated: Bool) {        super.setSelected(selected, animated: animated)    }            //MARK: -- 轮播图的delegate    func scrollViewDidScroll(scrollView: UIScrollView) {        let scrollViewW = scrollView.frame.size.width        let x = scrollView.contentOffset.x        let page = (x + scrollViewW / 2) / scrollViewW        pageController?.currentPage = Int(page)    }}

就为定义了scrollView还有UIpageController

菜单的代码为

import UIKitclass Menu: UITableViewCell , UIScrollViewDelegate {        var pageControl: UIPageControl?        let SCREEN_WIDTH = UIScreen.mainScreen().bounds.size.width    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {        super.init(style: style, reuseIdentifier: reuseIdentifier)        let backView1 = UIView(frame: CGRectMake(0,0,SCREEN_WIDTH,160))        let backView2 = UIView(frame: CGRectMake(SCREEN_WIDTH,0,SCREEN_WIDTH,160))                backView1.backgroundColor = UIColor(red: 207, green: 192, blue: 175, alpha: 1)        backView2.backgroundColor = UIColor(red: 107, green: 105, blue: 175, alpha: 1)                let scrollView = UIScrollView(frame: CGRectMake(0,0,SCREEN_WIDTH,160))        scrollView.contentSize = CGSizeMake(2 * SCREEN_WIDTH, 160)        scrollView.pagingEnabled = true        scrollView.delegate = self        scrollView.showsHorizontalScrollIndicator = false        scrollView.showsVerticalScrollIndicator = false                scrollView.addSubview(backView1)        scrollView.addSubview(backView2)                self.addSubview(scrollView)                        for i in 0  ..< 16  {                        if i < 4 {                let frame = CGRectMake(CGFloat(i) * SCREEN_WIDTH / 4, 0, SCREEN_WIDTH / 4, 80)                                let imageView = UIImageView(frame: frame)                imageView.image = UIImage(named: "DEEMO\(i + 1)")                                let tap = UITapGestureRecognizer(target: self, action: #selector(onTap))                imageView.addGestureRecognizer(tap)                                backView1.addSubview(imageView)            }else if i < 8 {                                let frame = CGRectMake(CGFloat(i - 4) * SCREEN_WIDTH / 4, 80, SCREEN_WIDTH / 4, 80)                                let imageView = UIImageView(frame: frame)                imageView.image = UIImage(named: "DEEMO\(i + 1)")                                let tap = UITapGestureRecognizer(target: self, action: #selector(onTap))                imageView.addGestureRecognizer(tap)                                backView1.addSubview(imageView)            }else if i < 12 {                                let frame = CGRectMake(CGFloat(i - 8) * SCREEN_WIDTH / 4, 0, SCREEN_WIDTH / 4, 80)                                let imageView = UIImageView(frame: frame)                imageView.image = UIImage(named: "DEEMO\(i + 1)")                                let tap = UITapGestureRecognizer(target: self, action: #selector(onTap))                imageView.addGestureRecognizer(tap)                                backView2.addSubview(imageView)            }else {                                let frame = CGRectMake(CGFloat(i - 12) * SCREEN_WIDTH / 4, 0, SCREEN_WIDTH / 4, 80)                                let imageView = UIImageView(frame: frame)                imageView.image = UIImage(named: "DEEMO\(i + 1)")                                let tap = UITapGestureRecognizer(target: self, action: #selector(onTap))                imageView.addGestureRecognizer(tap)                                backView2.addSubview(imageView)            }        }                        pageControl = UIPageControl(frame: CGRectMake(SCREEN_WIDTH / 2 - 20, 140 , 0 , 20))        pageControl!.currentPage = 0        pageControl!.numberOfPages = 2        pageControl!.currentPageIndicatorTintColor = UIColor.blackColor()        pageControl!.pageIndicatorTintColor = UIColor.grayColor()        self.addSubview(pageControl!)    }        func onTap(){        print(123)    }        required init?(coder aDecoder: NSCoder) {        fatalError("init(coder:) has not been implemented")    }    override func setSelected(selected: Bool, animated: Bool) {        super.setSelected(selected, animated: animated)            }        //MARK: -- 轮播图的delegate    func scrollViewDidScroll(scrollView: UIScrollView) {        let scrollViewW = scrollView.frame.size.width        let x = scrollView.contentOffset.x        let page = (x + scrollViewW / 2) / scrollViewW        pageControl?.currentPage = Int(page)    }}
菜单的内容跟轮播图的很类似就除了通过计算算了菜单中的图片的存放位置

整个的App就为这么制作就完成了..

代码写的很简单.也很丑陋.所以尽情原谅哈大笑

整个APP中的viewController都在storyBoard里设置了identity里的storyBoard ID 内容都为其对应的其类名.

整个代码就为这样如果有什么写的不对的话可以告诉下小弟..这个就为我自己研究的swift做出来的小demo样微笑

0 0
原创粉丝点击