第一步:构建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
需要图片 自行查找
最终运行效果图: