我遇到了一个极其诡异的问题,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)!
}
}
请问是否有朋友遇到过类似问题?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.