
我遇到了一个极其诡异的问题,iOS 12.1 之前都没有
问题描述:对于一个内嵌于 UITabBarController 的 VC,在底部(和 tabBarController.tabBar 重叠的位置)添加 tab bar (含 item )时,所显示的 item 会往发生无法理解的移位,且无法点击,但打印显示 tab bar 的位置并无任何问题
一些探索:
复现方式:新建一个 Tabbed App,将 FirstViewController.swift 替换成这段代码即可:
import UIKit class FirstViewController: UIViewController { var tabBar: UITabBar! var toggleButton: UIButton! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. setupTabbar() setupToggleButton() } func setupTabbar() { let frameOfDefaultTabbar = tabBarController!.tabBar.frame let tabbarFrame: CGRect tabbarFrame = CGRect(x: frameOfDefaultTabbar.origin.x, y: frameOfDefaultTabbar.origin.y, width: frameOfDefaultTabbar.width, height: frameOfDefaultTabbar.height) // 把上面一行换成下面一行,就能看到没有向左的偏移了 // tabbarFrame = CGRect(x: frameOfDefaultTabbar.origin.x, y: frameOfDefaultTabbar.origin.y - 49, width: frameOfDefaultTabbar.width, height: frameOfDefaultTabbar.height);print(tabbarFrame) tabBar = UITabBar(frame: tabbarFrame) tabBar.isHidden = true let newItem = UITabBarItem(title: "second", image: UIImage(named: "second"), selectedImage: nil) tabBar.items = [newItem] view.addSubview(tabBar) // 把这一行注释掉,所添加的 tab bar 就会被 tabBarController!.tabBar 完全覆盖,也就是没有偏移 // tabBarController?.tabBar.isHidden = true } func setupToggleButton() { toggleButton = UIButton(frame: CGRect(x: 100, y: 100, width: 100, height: 30)) toggleButton.setTitle("切换 tabBar", for: .normal) toggleButton.setTitleColor(UIColor.black, for: .normal) toggleButton.addTarget(self, action: #selector(toggle), for: .touchUpInside) view.addSubview(toggleButton) } @objc func toggle() { tabBar.isHidden = !tabBar.isHidden tabBarController?.tabBar.isHidden = !(tabBarController?.tabBar.isHidden)! } } 请问是否有朋友遇到过类似问题?
1 alfa 2018-11-18 23:29:39 +08:00 via iPhone tabBar.isTranslucent = false |
2 fujianjin6471 OP @alfa 谢谢,我把这一行代码放在`tabBar = UITabBar(frame: tabbarFrame)`之后,但好像没起作用 |
3 Cavolo 2018-11-19 00:20:05 +08:00 via iPhone 把透明关了就行 |
4 fujianjin6471 OP @Cavolo 谢谢,请问你的意思和 1 楼的代码一样吗?我试过,不行啊。还是说,我理解错了? |
5 rannie 2018-11-19 09:17:01 +08:00 |
6 fujianjin6471 OP @rannie 谢谢,的确就是这个问题,不过我还没搞定解决方案 |
7 fujianjin6471 OP @rannie 好像还不太一样,我这个并不涉及到 backgroundImage,isTranslucent 和 backgroundImage 都设置过,也没有效果 |