swift实现布洛克简单界面

第一步:构建iOS工程,选择Swift语言
第二步:新建New Group 名为PageTitleView
里面导入第三方 链接: 第三方提取码: p25b
第三步:新建New Group 名为控制器
控制器下面分别有 三个分组 Controller View Model
AppDelegate.swift

let vc1 = XinwenViewController()
        let nav1 = UINavigationController(rootViewController: vc1)
        nav1.tabBarItem = UITabBarItem(title: "新闻", image: UIImage(named: "新闻"), selectedImage: UIImage(named: "新闻"))
        
        let vc2 = ShequViewController()
        let nav2 = UINavigationController(rootViewController: vc2)
        nav2.tabBarItem = UITabBarItem(title: "社区", image: UIImage(named: "社区"), selectedImage: UIImage(named: "社区"))
        
        let vc3 = TouyanViewController()
        let nav3 = UINavigationController(rootViewController: vc3)
        nav3.tabBarItem = UITabBarItem(title: "投研", image: UIImage(named: "投研"), selectedImage: UIImage(named: "投研"))
        
        let vc4 = WodeViewController()
        let nav4 = UINavigationController(rootViewController: vc4)
        nav4.tabBarItem = UITabBarItem(title: "我的", image: UIImage(named: "我的"), selectedImage: UIImage(named: "我的"))
        
        let tbv = UITabBarController()
        tbv.viewControllers = [nav1,nav2,nav3,nav4]
//        tbv.selectedViewController = nav2
        self.window?.rootViewController = tbv

创建继承于UIViewController的类 名为 XinwenviewController
里面代码为:

private lazy var pageTitleView: MFPageTitleView = {
        let config = MFPageTitleViewConfig()
        config.titleColor = colorWithRGB(r: 43, g: 43, b: 43)
        config.titleSelectedColor = colorWithRGB(r: 211, g: 0, b: 0)
        config.titleFont = UIFont.systemFont(ofSize: 14, weight: .regular)
        config.indicatorColor = colorWithRGB(r: 211, g: 0, b: 0)
        let pageTitleView = MFPageTitleView(frame: CGRect(x: 0, y: navHeight, width: SCREEN_WIDTH, height: 41), titles: ["推荐", "快讯", "深度", "时点对话", "行情分析"], config: config)
        pageTitleView.pageTitleViewDelegate = self
        return pageTitleView
    }()
    
    private lazy var pageContentView: MFPageContentView = {
        var childControllers = [UIViewController]()
        var arr:[UIViewController] = [One(),Two(),Three(),Four(),Five()]
        for i in 0..<5 {
            childControllers.append(arr[i])
        }
        
        let pageContentViewY = pageTitleView.frame.maxY
        let pageContentView = MFPageContentView(frame: CGRect(x: 0, y: pageContentViewY, width: SCREEN_WIDTH, height: SCREEN_HEIGHT-pageContentViewY), parentVC: self, childVCs: childControllers)
        pageContentView.pageContentViewDelegate = self
        return pageContentView
    }()
    override func viewDidLoad() {
        super.viewDidLoad()
        self.navigationItem.title = "布洛克"
        self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .save, target: self, action: nil)
        view.addSubview(pageTitleView)
        view.addSubview(pageContentView)
    }


}
extension XinwenViewController: MFPageTitleViewDelegate, MFPageContentViewDelegate {
    func selectedIndexInPageTitleView(pageTitleView: MFPageTitleView, selectedIndex: Int) {
        self.pageContentView.setPageContentViewCurrentIndex(currentIndex: selectedIndex)
    }
    func pageContentViewScroll(progress: CGFloat, originalIndex: Int, targetIndex: Int) {
        self.pageTitleView.setPageTitleView(progress: progress, originalIndex: originalIndex, targetIndex: targetIndex)
    }
}

文件夹 Controller里
创建五个继承于UIViewController的类 分别为 One Two Three Four Five
One.swift代码

class One: UIViewController,UITableViewDelegate,UITableViewDataSource,UIScrollViewDelegate {
    //分区个数
    public func numberOfSections(in tableView: UITableView) -> Int{
        return 2
    }
    //单元格个数
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        if section==0 {
            return 1
        }else{
            return 6
        }
    }
    //单元格个数
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        var cell:UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! UITableViewCell
        cell = UITableViewCell.init(style: .subtitle, reuseIdentifier: "Cell")
        if indexPath.section == 0 {
            tableView.rowHeight = 80
            cell.imageView?.image = UIImage(named: "a1")
            cell.textLabel?.text = "创业黑马董事长:区块链是机会,但不是每个人的机会"
            cell.textLabel?.numberOfLines = 0
            cell.accessoryType = UITableViewCell.AccessoryType.disclosureIndicator
        }else{
            let cell1:OneTableViewCell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! OneTableViewCell
            tableView.rowHeight = 140
            
            
            return cell1
        }
        return cell
    }
    var ojtable:UITableView?
    var View:UIView?
    var scroll:UIScrollView?
    var page:UIPageControl?
    var imgV:UIImageView?
    var timer:Timer?
    var k:Int = 0
    override func viewDidLoad() {
        super.viewDidLoad()
        Time()//定时器
        Table()//表格
        ScrollView()//滚动视图
        PageContol()//分页控制器
    }
    //定时器
    func Time() {
        timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(time), userInfo: nil, repeats: true)
        timer!.fire()
    }
    //表格
    func Table(){
        ojtable = UITableView(frame: self.view.frame, style: .grouped)
        self.view.addSubview(ojtable!)
        ojtable?.delegate = self;
        ojtable?.dataSource = self;
        ojtable?.register(UINib (nibName: "OneTableViewCell", bundle: nil), forCellReuseIdentifier: "Cell")
    }
    //滚动视图
    func ScrollView() {
        View = UIView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 220))
        ojtable?.tableHeaderView = View
        
        scroll = UIScrollView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 220))
        View?.addSubview(scroll!)
        scroll?.delegate = self
        scroll?.contentSize = CGSize(width: UIScreen.main.bounds.width*5, height: 220)
        scroll?.showsVerticalScrollIndicator = false
        scroll?.showsHorizontalScrollIndicator = false
        scroll?.bounces = false
        scroll?.isPagingEnabled = true
        let arr = ["4","2","3","1","5"]
        for i in 0..<arr.count {
            imgV = UIImageView(frame: CGRect(x: i*Int(UIScreen.main.bounds.width), y: 0, width: Int(UIScreen.main.bounds.width), height: 220))
            imgV?.image = UIImage(named: arr[i])
            scroll?.addSubview(imgV!)
        }
    }
    //分页控制器
    func PageContol() {
        page = UIPageControl(frame: CGRect(x: (UIScreen.main.bounds.width-100)/2, y: 150, width: 100, height: 40))
        page?.currentPage = 1
        page?.numberOfPages = 5
        page?.pageIndicatorTintColor = UIColor.red
        page?.currentPageIndicatorTintColor = UIColor.orange
        View?.addSubview(page!)
    }
    //滚动视图协议方法
    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        page?.currentPage = Int((scroll?.contentOffset.x)!/UIScreen.main.bounds.width)
    }
    // 定时器的时间
    @objc func time(){
        scroll?.contentOffset = CGPoint(x: Int(UIScreen.main.bounds.width)*k, y: 0)
        k+=1
        if k>4 {
            k=0
        }
    }
    

}

Two.swift

self.view.backgroundColor = UIColor.black

Three.swift

self.view.backgroundColor = UIColor.white

Four.swift

  self.view.backgroundColor = UIColor.orange

Five.swift

  self.view.backgroundColor = UIColor.blue

文件夹 View里
创建继承于UITableViewCell 的类 名为OneTableViewCell 有xib
拖拽内容

import UIKit

class OneTableViewCell: UITableViewCell {
    @IBOutlet weak var imgV: UIImageView!
    @IBOutlet weak var Title: UILabel!
    @IBOutlet weak var XimgV: UIImageView!
    @IBOutlet weak var name: UILabel!
    @IBOutlet weak var age: UILabel!
    @IBOutlet weak var sex: UILabel!
    
    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }
    
}

xib:
在这里插入图片描述
文件夹 Model里
创建继承于UIViewController 的类
分别为shequViewController TouyanViewController WodeViewController
需要图片 自行查找
在这里插入图片描述
最终运行效果图:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值