我遇到了一个极其诡异的问题,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 都设置过,也没有效果☹️
|