FS.*_*.O6 2 iphone cocoa-touch uitabbarcontroller ios swift
我有一个带有标签栏和导航栏的应用程序。
我有一个BaseVC和一个DetailVC。我DetailVC从推BaseVC。我希望选项卡栏位于推送的 VC 下方DetailVC。我正在用hidesBottomBarWhenPushed它来实现它。它工作得很好,但由于某种原因,当它动画推动时,选项卡栏仍然可见,而当动画结束时,选项卡栏被隐藏。我也希望它在动画中被推到VC下面。
我的代码是:
self.hidesBottomBarWhenPushed = true
self.navigationController?.pushViewController(detailVC, animated: true)
self.hidesBottomBarWhenPushed = false
Run Code Online (Sandbox Code Playgroud)
结果(错误)是这样的:
任何人都知道为什么标签栏“跳跃”?谢谢你!
在查看了相关项目后,我找到了一种使其发挥作用的方法:
viewWillLayoutSubviews从 中删除 ,TabBarViewController以便它不再确定选项卡栏的高度,从而不会停止动画正常工作。创建一个名为 MyTabBar (或您想要的任何名称)的新 swift 文件并将其放入其中:
import UIKit
class MyTabBar: UITabBar {
var tabBarHeight: CGFloat = 100
override func sizeThatFits(_ size: CGSize) -> CGSize {
let superSize = super.sizeThatFits(size)
return CGSize(width: superSize.width, height: self.tabBarHeight)
}
}
Run Code Online (Sandbox Code Playgroud)创建一个名为 TabBarStoryboard (或其他名称)的故事板。除了保存您稍后创建的 UITabBarController 之外,它不会用于任何其他用途。
在情节提要中,将 UITabBarController 的类类型设置为您的类TabBarViewController,以便在实例化时获得正确的类。
在情节提要中,将属于 UITabBarController 的 UITabBar 的类类型设置为 MyTabBar,以便实例化时它也是正确的类。
在你的 RootViewController 中替换它:
fileprivate let tabBarViewController = TabBarViewController()
Run Code Online (Sandbox Code Playgroud)
有了这个:
fileprivate lazy var tabBarViewController: TabBarViewController = {
let storyboard = UIStoryboard(name: "TabBarStoryboard", bundle: nil)
return storyboard.instantiateViewController(withIdentifier: "MyTabBarController") as! TabBarViewController
}()
Run Code Online (Sandbox Code Playgroud)在 TabBarViewController 中将其添加到末尾viewDidLoad以设置选项卡栏的高度:
if let tabBar = self.tabBar as? MyTabBar {
tabBar.tabBarHeight = self.tabBarHeight
}
Run Code Online (Sandbox Code Playgroud)现在,如果您得到所有正确的信息,您应该有一个您想要的大小的选项卡栏,并且动画应该正常工作,因为选项卡栏的高度不再由 viewDidLayoutSubviews 方法控制。
我必须使用故事板来保存基本的 UITabBarController,因为我找不到一种方法来设置其 UITabBar 属性的类(如果有人知道添加注释的方法)。
如果这很难理解,我已将您的项目版本上传到 dropbox,链接如下:PlayWiz-NewVersion.zip。请小心,因为它将解压缩到相同的目录结构,因此将其解压到与原始文件夹不同的文件夹,否则您将丢失原始文件夹。
该方法似乎对我来说工作正常,我认为没有理由出现任何问题,但首先要彻底测试它。
| 归档时间: |
|
| 查看次数: |
1416 次 |
| 最近记录: |