答案 0 :(得分:1)
尝试将约束的所有值设置为0,我有同样的问题,图像将位于标签上方或图像不正确, 对于约束,如果要为顶部设置约束,则需要为底部设置相同的约束...
我希望这可以帮助你。
答案 1 :(得分:1)
不使用"松散"标签栏。您只能使用UITabBarController提供的标签栏。重构您的体系结构以使用UITabBarController,并且标签栏在iPhone X上看起来正确(并且通常会正确调整大小,例如纵向比iPhone上的横向更高)。
答案 2 :(得分:0)
请删除标签栏的高度限制。因为与其他iPhone设备相比,iPhone X的标签栏默认高度不同。
希望这会对你有所帮助。
答案 3 :(得分:0)
您可以使用此代码更新标签栏的高度
let ApplicationDelegate = UIApplication.shared.delegate as! AppDelegate
DispatchQueue.main.async {
if #available(iOS 11.0, *) {
if UIDevice().userInterfaceIdiom == .phone, ApplicationDelegate.window!.safeAreaInsets.top > 0 {
let kTabBarHeight: CGFloat = 49.0/*default tab bar height*/ + ApplicationDelegate.window!.safeAreaInsets.bottom
self.tabBar.frame = CGRect(x: 0, y: self.view.frame.size.height - kTabBarHeight, width: self.view.frame.size.width, height: kTabBarHeight);
}
}
}
希望它会对你有所帮助。
答案 4 :(得分:0)
不要在UITabBar控制器中为图像添加任何约束,并为iPhoneX更新UITabbar及其项目的高度。
`override func viewWillLayoutSubviews() {
var newTabBarFrame = tabBar.frame
var newTabBarHeight: CGFloat = 60
if UIDevice.current.iPhoneX{
newTabBarHeight = 102
}
newTabBarFrame.size.height = newTabBarHeight
newTabBarFrame.origin.y = self.view.frame.size.height - newTabBarHeight
tabBar.frame = newTabBarFrame
let numberOfItems = CGFloat(tabBar.items!.count)
let customColor = UIColor.lightGray.cgColor
let tabBarItemSize = CGSize(width: tabBar.frame.width / numberOfItems, height: tabBar.frame.height)
tabBar.selectionIndicatorImage = UIImage.imageWithColor(color: customColor, size: tabBarItemSize).resizableImage(withCapInsets: UIEdgeInsets.zero)
// remove default border
tabBar.frame.size.width = self.view.frame.width + 4
tabBar.frame.origin.x = -2
}`