gpt4 book ai didi

ios - 标签栏重叠 View 后面

转载 作者:行者123 更新时间:2023-11-30 11:02:36 26 4
gpt4 key购买 nike

我似乎无法解决这个问题,我将标签栏高度从 viewWillLayoutSubviews() 调整为 60,但覆盖 View 似乎不承认调整后的高度并效仿.

我发现的其他类似问题实际上并不相似(请参见此处: iOS 7 Custom TableView Is Under TabBar ),因为它们的选项卡栏是半透明的,而我的不是。

这是我迄今为止实现的:

在我的自定义UITabBarController中:

override func viewWillLayoutSubviews() {
var newTabBarFrame = tabBar.frame
let newTabBarHeight: CGFloat = 60
newTabBarFrame.size.height = newTabBarHeight
newTabBarFrame.origin.y = self.view.frame.size.height - newTabBarHeight
tabBar.frame = newTabBarFrame
}

在我的一个选项卡的 UIViewController 中:

override func viewDidLoad() {
view.addSubview(tableView)
NSLayoutConstraint.activate([
NSLayoutConstraint(item: tableView, attribute: NSLayoutAttribute.leading, relatedBy: .equal, toItem: view, attribute: NSLayoutAttribute.leading, multiplier: 1, constant: 0),
NSLayoutConstraint( item: tableView, attribute: NSLayoutAttribute.top, relatedBy: .equal, toItem: view, attribute: NSLayoutAttribute.top, multiplier: 1, constant: 0),
NSLayoutConstraint(item: tableView, attribute: NSLayoutAttribute.trailing, relatedBy: .equal, toItem: view, attribute: NSLayoutAttribute.trailing, multiplier: 1, constant: 0),
NSLayoutConstraint(item: tableView, attribute: NSLayoutAttribute.bottom, relatedBy: .equal, toItem: view, attribute: NSLayoutAttribute.bottom, multiplier: 1, constant: 0)
])
}

这是当前结果: Here您可以看到覆盖 View 被部分遮挡。这发生在所有其他选项卡的覆盖 View Controller 上

顺便说一句,我已经确保 tableview 的 translatesAutoresizingMaskIntoConstraints 设置为 false

最佳答案

您可以使用自定义UITabBar来执行此操作。只需覆盖 sizeThatFits(_:) 即可使用您的自定义高度:

class TabBar: UITabBar {

private let height:CGFloat = 60

override func sizeThatFits(_ size: CGSize) -> CGSize {
var bottomSafeAreaInsets: CGFloat = 0
if #available(iOS 11.0, *) {
bottomSafeAreaInsets = UIApplication.shared.keyWindow?.safeAreaInsets.bottom ?? 0
}
return CGSize(width: size.width, height: height + bottomSafeAreaInsets)
}
}

关于ios - 标签栏重叠 View 后面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53150140/

26 4 0