热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在标签栏控制器中隐藏标签栏但保留其空间,以使子VC在Swift中不会扩展到屏幕底部?

我已将标签栏隐藏在我的标签栏控制器中,并改为使用集合视图作为程序的主菜单

我已将标签栏隐藏在我的标签栏控制器中,并改为使用集合视图作为程序的主菜单。为什么?我花了2个小时使它看起来像所需的;标签栏很难根据我的需要进行自定义,我花了数小时没有结果。其余的只是一个标准的控制器。集合视图的委托为选项卡栏控制器设置选定的索引;它工作正常;我唯一的问题来自隐藏标签栏:子视图控制器正在从下方扩展到集合视图的顶部;转到屏幕底部。有没有一种方法可以为VC设置容器,以使子对象的底部位于标签栏可见的位置?我可以这样做但不使用标签栏/将容器的底部与屏幕底部保持一定距离吗?下面的代码,谢谢。

class ProgramMainmenu: UITabBarController {
//MARK: - Properties.
fileprivate lazy var programMainmenu: MenuTypeCV = {
let mainmenu = MenuTypeCV(frame: .zero,collectionViewLayout: UICollectionViewFlowLayout())
mainmenu.defaultSelectedMenuTab = IndexPath(item: 0,section: 0)
mainmenu.delegate = self
mainmenu.dataSource = self
mainmenu.backgroundColor = UIColor.customColoursForAllElements(colourName: "background blue")
return mainmenu
}()
//MARK: - Init.
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.customColoursForAllElements(colourName: "background blue")
programMainmenu.register(MainmenuTab.self,forCellWithReuseIdentifier: cellID)
navigationController?.navigationBar.isHidden = true
self.tabBar.isHidden = true
loadchildviewcontrollers()
setMainmenuView()
}
//MARK: - Functions.
fileprivate func setMainmenuView() {
view.addSubview(programMainmenu)
let mainmenuCOnstraints= [
programMainmenu.bottomAnchor.constraint(equalTo: view.bottomAnchor,constant: -2),programMainmenu.leadingAnchor.constraint(equalTo: view.leadingAnchor,constant: 8),programMainmenu.trailingAnchor.constraint(equalTo: view.trailingAnchor,constant: -8),programMainmenu.heightAnchor.constraint(equalToConstant: 93)
]
NSLayoutConstraint.activate(mainmenuConstraints)
}
fileprivate func loadchildviewcontrollers() {
let test1 = FirstTestController()
let nav1 = UINavigationController(rootViewController: test1)
nav1.navigationBar.isHidden = true
let test2 = SecondTestController()
let nav2 = UINavigationController(rootViewController: test2)
nav2.navigationBar.isHidden = true
let test3 = ThirdTestController()
let nav3 = UINavigationController(rootViewController: test3)
nav3.navigationBar.isHidden = true
let test4 = FourthTestController()
let nav4 = UINavigationController(rootViewController: test4)
nav4.navigationBar.isHidden = true
let test5 = FifthTestController()
let nav5 = UINavigationController(rootViewController: test5)
nav5.navigationBar.isHidden = true
viewCOntrollers= [nav1,nav2,nav3,nav4,nav5]
}
}
extension ProgramMainmenu: UICollectionViewDelegateFlowLayout,UICollectionViewDataSource {
func numberOfSections(in collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(_ collectionView: UICollectionView,numberOfItemsInSection section: Int) -> Int {
return mainmenuTabs.count
}
func collectionView(_ collectionView: UICollectionView,cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = programMainmenu.dequeueReusableCell(withReuseIdentifier: cellID,for: indexPath) as! MainmenuTab
let tab = mainmenuTabs[indexPath.item]
cell.mainmenuTab = tab
return cell
}
func collectionView(_ collectionView: UICollectionView,layout collectionViewLayout: UICollectionViewLayout,sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: programMainmenu.frame.width / 5,height: programMainmenu.frame.height)
}
func collectionView(_ collectionView: UICollectionView,minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
return 0
}
func collectionView(_ collectionView: UICollectionView,minimumLinespacingForSectionAt section: Int) -> CGFloat {
return 0
}
func collectionView(_ collectionView: UICollectionView,didSelectItemAt indexPath: IndexPath) {
switch indexPath.item {
case 0: self.selectedIndex = 0
case 1: self.selectedIndex = 1
case 2: self.selectedIndex = 2
case 3: self.selectedIndex = 3
case 4: self.selectedIndex = 4
default: print("no such main tab")
}
}
}





推荐阅读
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文讨论了一个数列求和问题,该数列按照一定规律生成。通过观察数列的规律,我们可以得出求解该问题的算法。具体算法为计算前n项i*f[i]的和,其中f[i]表示数列中有i个数字。根据参考的思路,我们可以将算法的时间复杂度控制在O(n),即计算到5e5即可满足1e9的要求。 ... [详细]
  • Java各个版本新特性及Lambda表达式简介
    本文介绍了Java各个版本的新特性,包括接口的默认方法和Lambda表达式。接口的默认方法允许给接口添加非抽象的方法实现,使用default关键字。Lambda表达式提供了更简洁的语法,可以替代传统的匿名对象的方式。同时,还介绍了Lambda表达式在排序中的应用。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
author-avatar
mobiledu2502856483
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有