Objective c iPhone X上的IOS选项卡栏高度问题

Objective c iPhone X上的IOS选项卡栏高度问题,objective-c,height,uitabbar,iphone-x,Objective C,Height,Uitabbar,Iphone X,我尝试了很多解决方案,包括。所以,请阅读完整的问题,然后再标记为重复。对于iPhoneX,我有使用安全区域指南来支持iPhoneX设计。一切都很好,除了选项卡栏,我已经仔细检查了它的安全区域约束,但运行后它的项目仍然分散。 但请不要认为标签栏的高度是恒定的,只有其中的项目是正确的 这是我故事板的图片,请不要对其进行约束和调整 据我所知一切都是对的。。。但我肯定遗漏了一些东西,请检查,任何建议都会有很大帮助。但请不要,我已经尝试了几乎所有的方式,这是在堆栈或谷歌的前几个链接中提到的 这是我用来填

我尝试了很多解决方案,包括。所以,请阅读完整的问题,然后再标记为重复。对于iPhoneX,我有使用安全区域指南来支持iPhoneX设计。一切都很好,除了选项卡栏,我已经仔细检查了它的安全区域约束,但运行后它的项目仍然分散。

但请不要认为标签栏的高度是恒定的,只有其中的项目是正确的

这是我故事板的图片,请不要对其进行约束和调整

据我所知一切都是对的。。。但我肯定遗漏了一些东西,请检查,任何建议都会有很大帮助。但请不要,我已经尝试了几乎所有的方式,这是在堆栈或谷歌的前几个链接中提到的

这是我用来填充项目图像的代码

UIColor *color = [UIColor colorWithRed:192.0f/255.0f green:41.0f/255.0f blue:66.0f/255.0f alpha:1.0f];

NSDictionary *textColors = [NSDictionary dictionaryWithObjectsAndKeys:color, NSForegroundColorAttributeName, nil];

for(UITabBarItem *tab in self.tabBar.items)
{
    [tab setTitleTextAttributes:textColors forState:UIControlStateNormal];
    [tab setTitleTextAttributes:textColors forState:UIControlStateSelected];
}
self.tabBar.itemPositioning = UITabBarItemPositioningAutomatic;

[self.tabBar.items[0] setImage:[[UIImage imageNamed:@"search_icon"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];
[self.tabBar.items[1] setImage:[[UIImage imageNamed:@"user_icon"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];
[self.tabBar.items[2] setImage:[[UIImage imageNamed:@"call_icon"]
    imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];
[self.tabBar.items[3] setImage:[[UIImage imageNamed:@"services_icon"]
    imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];

尝试使用文档中推荐的方法设置项目

要直接配置选项卡栏项,请使用setItems:animated:方法 选项卡栏本身的属性

像这样做

UIIImage *image0 = [UIImage imageNamed:@"search_icon"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UITabBarItem *item0 = [[UITabBarItem alloc] initWithTitle:self.tabBar.items[0].title image:image0 tag:0];
// And so on or in a loop
NSArray<UITabBarItem *> *items = @[ item0, ]; // Add all items here
[self.tabBar setItems:items animated:NO];
在这里阅读更多


起初,我尝试了几乎所有可能的解决方案,但根本不起作用,但后来不知何故,我在底部添加了一些负边距。让我们假设-1,然后一切都开始像魅力一样工作。我还试着为实验设置正的裕度。但这不起作用,我得出结论,只有负数起作用。这一定是UIKit中的一个问题。 将底部约束设置为安全区域,因为任何负数都可以解决此问题

检查它的底部约束。

只需将您的UIAbbar放在UIView中


这对我有用。

这肯定有用

覆盖func viewDidLoad{ super.viewDidLoad

    let numberOfItems = CGFloat(tabBArView.items!.count)
    let tabBarItemSize = CGSize(width: tabBArView.frame.width / numberOfItems, height: 48)

     tabBArView.selectionIndicatorImage =  UIImage.imageWithColor(color: UIColor.orange, size: tabBarItemSize).resizableImage(withCapInsets: UIEdgeInsets.zero)
    tabBArView.frame.size.width = self.view.frame.width + 4
    tabBArView.frame.origin.x = -2
扩展UIImage{

class func imageWithColor(color: UIColor, size: CGSize) -> UIImage {
    let rect: CGRect = CGRect(x: 0, y: 0, width: size.width, height: size.height)
    UIGraphicsBeginImageContextWithOptions(size, false, 0)
    color.setFill()
    UIRectFill(rect)
    let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
    UIGraphicsEndImageContext()
    return image
}

奇怪。如果仅通过故事板配置,它是否有效?您可以尝试取消选中选项卡栏的“安全区域相对边距”吗?如果不起作用,请尝试取消选中“保留超级视图边距”。当然……让我这样做吧,伙计,您不会相信什么对我有效……我将“安全区域”的“底部约束”设置为-1,它有效……我也尝试了+1,0,但它无效没有只-1及以上任何数字的负作品罚款
class func imageWithColor(color: UIColor, size: CGSize) -> UIImage {
    let rect: CGRect = CGRect(x: 0, y: 0, width: size.width, height: size.height)
    UIGraphicsBeginImageContextWithOptions(size, false, 0)
    color.setFill()
    UIRectFill(rect)
    let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
    UIGraphicsEndImageContext()
    return image
}