一、前语

没想到本系列第一篇局势就能收成这么多朋友的喜爱与鼓动,让我更有动力继续本系列。

之所有出的这么慢,也是因为,我希望尽量把每个知识点讲到位,哪怕你是零基础,努力想成员一名 iOSer 的朋友,也能够再学习本系列的时分,掌握知识细节,所以,每遇到我认为是一个需求打开剖析的点的内容,我都会重复再三招认,并认appreciate真考虑如何用最好的xcode怎样用方法来呈现给咱们。

已然要做本系列,咱们肯定要挑选一个仿照的appleid『政策』,而这个『政策』,假设咱们之前有看过我同享的《抓包东西 Charles》,咱们必定能够猜的出来,咱们本系列行将仿照的『政策』是:京东APPcol拉达xcodeor{red}{京东APP}

今日先仿京东AappstorePP的appointment底部导航栏,如下图:

iOS Swift5从0到1系列(二):学习UITabBarController

二、底部导航栏控制器(UITabBarController)swift选手

咱们打开京东APP,进入到它的主页,就能看到最底部有一排五个按钮,每个按钮都对应着一个页面(咱们称之为 ViewController),因此,最底部咱们称之为『底部导航栏』。

源码注释:
If more thaandroid软件开发n five view coswift结算体系ntrollers are added to a tabandroid下载安装 bar controller, only the first four will display.
假设创建的个数大于5个,将会直接闪现前4个。
The rest will be accessibmacOSle under an automxcode下载安装atically generated More item.
剩余的将会都收敛到一个叫作『更多』的按钮swiftkey中。

这也就是为何几乎绝大多数 APP 都只界说不超越 5 个按钮及对应的 ViewController 的原因;源码注释中,并没有说最少界说几个,approach不过,一般来说至少界说 2 个以上(假设界说为一个,虽然能够,但那运用 UITabBarController 就没有任何意义)。

在正式android什么意思开始学习运用前,咱们先剖析下 UIKit.UITabBarConswiftertroller 中的源码。

2.1、UITabBarC拉达xcodeontroller 剖析

@available(iOS 2.0, *)
open cXcodelass UITabandroid下载BarController : UIViewController, UITabBarDelegate, NSCodingandroid软件开发 {
open var viewControllers: [UIViewContrAPPoller]?
......
}

咱们看到:

  • UITabBarController 继xcode下载安装承于 UIViewContrappearanceoller;
  • 结束了 UITabBarDelegate 即 UITabBar(底部按钮的托付);
  • 以及 NSCoding(归档与反归档数据存取协议);
  • 界说了 UIViewController 政策可 nil 数组;

2.2、扩展 UIViewController 剖析

extension UIswift代码ViewController {
// Automatically creatmacOSed lazily with the view controller's title if it's not set eappearxplicitly.
oandroid的drawable类pen var tabBarItem: UITabBarItem!appleid
// Iandroid最新版别f the view controller has a tab bar controller as its ancexcode怎样设置成中文stor, reswift代码是什么意思turn it. Randroid最新版别eturns nil otherwise.
open var tabxcode怎样用Baswift代码是什么意思rController: UITabBarController? { get }
}

如上源码,对 UIViewController 进行了扩展,内置了 UITabBar 的按钮,即 taxcode版别bBarItem,该按钮能够增加文件、图标、音讯汽泡等。

三、UITabBarController 的运用

按照上一篇的内容,咱们先android下载创建工程,全部安排妥当如下:

iOS Swift5从0到1系列(二):学习UITabBarController

3.1、创建 Mainswift言语TabBarController

先创建一个『New Gmacosmojaveroup』,然后swifter『Nandroid的drawable类ew File』,如下:

iOS Swift5从0到1系列(二):学习UITabBarController

挑选『Cocoa Touch Class』,Subclass of 挑选 UITabBarController:

iOS Swift5从0到1系列(二):学习UITabBarController

3.2、增加 Group 及 5个apple UIViewControlandroid下载ler

iOS Swift5从0到1系列(二):学习UITabBarController

3.3、批改 AppDelegate.swift

咱们批改 AppDelegate.swift,让 windowswiftkey 的 rootViewController 为咱们的 MainTabBarController:

iOS Swift5从0到1系列(二):学习UITabBarController

作业模拟器如下闪现:

iOS Swift5从0到1系列(二):学习UITabBarController

最底部灰色区域就是底部导航 UITabBar。

3.4、增加 icoandroid什么意思ns

因为现在 macOS App Store 现已不允许下载 app 包到电脑,macosbigsur因此只能去官网下载appleid Android APK包,zip 解压后,查找『.png』文件,成果只发现了『分类』、『购物车』和『我的』三种图标,而『主页』和『发现macoscatalina』没有找到。早年,双11 京东 app 底部的 icons 都会变,所以,底部图标默许的应该不是咱们现在看到的姿态,但总之,不影macoscatalina响咱们的 demo 学习。

从 android apk 中拿到资源后,查询尺度大小,将 40×40 的命名为 @2x,而 60×60 的命名为 @android什么意思3x,如下:

iOS Swift5从0到1系列(二):学习UITabBarController

然后挑选 Xcode 项目中的『Assets.xcassets』,将上面的图标拖进去即可:

iOS Swift5从0到1系列(二):学习UITabBarController

开释后,Xcode 会自动识别,如下:

iOS Swift5从0到1系列(二):学习UITabBarController

3.5、结束android最新版别 UITabBarController 功用

代码如下(以下代码是通过重复优化往后的):

//
//  MainTabBarController.swift
//  JDApp
//
//  Created by qingye on 2021/3/5.
/android平板电脑多少钱/
import UIKit
class MainTabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
initTabBar()
}
func initTabBar() {
let home = HomeViewController()
handroid手机ome.tabBarItem.t拉达xcodeitle = "主页"
let cateandroid平板电脑多少钱gory = CategoryViewCswift选手ontroller()
caxcode怎样设置成中文tegory.tabBarItemandroid是什么手机牌子.titandroid最新版别le = "分类"
category.tabBarItem.image = UIImage(named: "category.png")
leswiftlyt found = FoundViewController()xcode怎样编写c言语
found.tabBarItem.title = "发现"
let cart = CartViewControlswift代码查询ler()
cart.tabBarItem.title = "购物车"
cart.tabBarItem.image = UIImage(named: "cart.png")
let mine = MineViewController()
mine.taxcode病毒检测工具bBarItem.title = "我的"
mine.tabBarItem.imandroid最新版别age = UIImage(named: "mine.png")
viewControllers = [hswift代码查询ome, category, found, cart, mine]
// 设置android是什么手机牌子 tabBar & tabBarItem
setTabBswift代码查询amacos体系rItemAttributes(bgCapplicationolor: UIColor(redapproach: 0.95, green: 0.95, blue: 0.95, alpha: 1))
}
/// 这种方法比较灵敏
func setTabBarItemAttributes(fontName: String = "Courier",
fontSize: CGFloat = 14,
normalColormacosmojave: UIColor = .gray,
selectedColor: UIColor = .randroid什么意思ed,
bgColor: Umacosx是什么文件夹IColor = .white) {
// tabBarItem 文字大小
var attributes: [NSAttributedStrmacOSing.Key: Any] = [.font: UIFont(name: fxcode病毒检测工具ontName, size: fontSize)!]
// tabBarIappointmenttem 文字默许色彩
attributes[.foregroundColor] = normalCoappleidlorAndroid
UITabBarItem.appearance().setTitleTextAttributes(attributes, for: .normal)
// tabBarItem 文字选中色彩
attributes[.foregroundColor] = seleswift什么意思ctedColor
UITabBarItem.appearancmacosx是什么文件夹e().setTitleTextAttributes(attributeAndroids, for: .selected)
// tabBar 文字、图片 共同选中高亮色
tabBar.tintColor = selectedColor
// tabBar 背景色
tabBar.barappearTintColor = bgColor
}
}

截图如下:

iOS Swift5从0到1系列(二):学习UITabBarController

3.6、批改 HomeViewController 及 CategoryViewController

  • HomeViewCoappearancentroller
//
//  HomeViewController.swandroid下载ift
//  JDApp
//
/apple/  Created by qingye on 2021/3/6.
//
import UImacOSKit
class HomeViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .green
lmacos是什么意思et label = UILabel(frame: CGRect.zeSwiftro)
label.text = "HomeViewController"
label.translatesAutoresizingMmacosmojaveasswift言语kIntoConstraintandroid软件开发s = false
view.addSubview(label)
NSLayoutCswift言语onappearancestraintapplication.activate([
labeandroid软件开发l.centerXAnchorapple.constraint(equalTo: vixcode教程ew.centerswifterXAnchor),
label.centerYAnchor.constraintmacos是什么意思(equalTo: view.centerYAnchor)
]swiftkey)
}
}
  • CategoryViewControxcode是什么软件ller
//
//  CategoryViewController.swiftxcode怎样设置成中文
//  JDApp
//
//  Cmacos体系更新reated by qingye on 2021/3/6.
//
import UIKAndroidit
class CategoryViewContrandroid什么意思oller: UIViewController {
override func viewDidLoaswift言语d() {
super.viewDidLoad()
let label = UILabel(frame: CGRect.zeroandroid手机)
label.text = "CategoryViSwiftewController"
label.trappleanslatesAutoappearanceresizingMaskIntoConstraints = false
viswift选手ew.addSubview(label)
NSLayoutConstraint.actiswift代码查询vate([Xcode
label.centerXAnchor.constraint(equalTo: view.centerXAnchor),
label.centerYAnchor.constraint(equalTo: view.cmacosxenterYAnchor)
])
}
}

3.7、作业模拟器

iOS Swift5从0到1系列(二):学习UITabBarController

iOS Swift5从0到1系列(二):学习UITabBarController

好了,本篇同享就到此结束,假设咱们有什么问题,swiftly也希望appleid多交流,谢谢!源代码会不才几回同享后,整体上android的drawable类传!后续会再次批改此文,也可继续重视,谢谢!