首页 文章

移动UITabBarItem图像?

提问于
浏览
84

通常在 UITabBar 的每个选项卡上都有一个小图像和一个命名选项卡的 Headers . 图像位于标签顶部/居中,以容纳下方的 Headers . 我的问题是:如果你想让tabBar只有一个图像而没有 Headers ,那么有一种方法可以将图像向下移动,使其在标签内更好地居中吗?

我目前正在使用(见下文):

[tabBarItem setFinishedSelectedImage:tabSelected withFinishedUnselectedImage:tabUnselected];

但是我更喜欢使用没有 Headers 的较大图像,此时如果我将图像大于约70像素@ 2x,它会从 UITabBar 的顶部开始边缘,同时在底部留下大量未使用的空间 .

7 回答

  • 2

    这对我有用

    Swift 4

    let array = tabBarController?.customizableViewControllers
    for controller in array! {
        controller.tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0)
    }
    
  • 7

    SWIFT 3.0

    您可以根据设计设置图像设置,设置顶部,左侧,底部和右侧 .

    self.tabBarItem.imageInsets = UIEdgeInsets(top: 5, left: 0, bottom: 0, right: 0)
    
  • 45

    对于iOS 11,除了设置ImageInsets之外,您还需要覆盖 TraitCollection 方法 . 请在子类UITabBarController类中添加该方法

    public override UITraitCollection TraitCollection {
     get {
      return UITraitCollection.FromHorizontalSizeClass(horizontalSizeClass: UIUserInterfaceSizeClass.Compact);
     }
    }
    
  • 123

    尝试调整 tabBarItemimageInsets (用于移动图标图像)并将控制器 Headers 设置为nil(因此不显示 Headers ) . 把这样的东西放到视图控制器中的 -init-viewDidLoad 方法中:

    Objective-C

    self.tabBarItem.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0);
    self.title = nil;
    

    Swift

    self.tabBarItem.imageInsets = UIEdgeInsets(top: 6, left: 0, bottom: -6, right: 0)
    self.title = nil
    

    UITabBarItemUIBarItem 的子类,具有 UIEdgeInsets imageInsets 属性 . 使用插图播放一点,直到它看起来不错(取决于您的tabbar图标图像)

  • 1

    你也可以通过故事板来做到这一点 . 选择tabbaritem,转到大小检查器并分配相应的insets .

    enter image description here

    *在Xcode上展示,版本7.3.1(7D1014)

  • 157

    如果您使用的是Xamarin,则可以:

    screen.TabBarItem.ImageInsets = new UIEdgeInsets(5, 0, -5, 0);
    screen.TabBarItem.Title = "";
    
  • 9

    创建 UITabBarController 的子类,并在其 viewDidLoad 中:

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        [self.viewControllers enumerateObjectsUsingBlock:^(UIViewController *vc, NSUInteger idx, BOOL *stop) {
            vc.tabBarItem.title = nil;
            vc.tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0);
        }];
    }
    

    斯威夫特3:

    for vc in self.viewControllers! {
        vc.tabBarItem.title = nil
        vc.tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0)
    }
    

相关问题