Accessibility

To help ensure your bottom navigation item is accessible to as many users as possible, please be sure to review the following recommendations:

-accessibilityLabel The label will be the title of the UITabBarItem. Currently you can't set this to a custom value.

-accessibilityValue Set an appropriate accessibilityValue value if your item has a badge value. For example, an item with an inbox icon with a badge value for how many emails are unread. You should explicitly set the accessibilityValue when the badge value doesn‘t provide enough context. For example, in an inbox example simply having the value “10” doesn’t provide enough context, instead the accessibility value should explain what the badge value symbolizes. The default value if there is a badge value and you haven't set any accessibilityValue will be that the accessibilityValue is the badgeValue.

Swift

tabBarItem.accessibilityValue = "10 unread emails"

Objective-C

tabBarItem.accessibilityValue = @"10 unread emails";

Minimum touch size

Make sure that your bottom navigation bar respects the minimum touch area. The Material spec calls for touch areas that should be least 48 points high and 48 wide.

Swift

override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
let size = bottomNavBar.sizeThatFits(view.bounds.size)
let bottomNavBarFrame = CGRect(x: 0,
y: view.bounds.height - size.height,
width: size.width,
height: size.height)
bottomNavBar.frame = bottomNavBarFrame
}

Objective-C

- (void)viewWillLayoutSubviews {
  [super viewWillLayoutSubviews];
  CGSize size = [_bottomNavigationBar sizeThatFits:self.view.bounds.size];
  CGRect bottomNavBarFrame = CGRectMake(0,
                                        CGRectGetHeight(self.view.bounds) - size.height,
                                        size.width,
                                        size.height);
  _bottomNavigationBar.frame = bottomNavBarFrame;
}