Skip to content

Commit 53f1039

Browse files
committed
feat(ios-bottom-navigation): create tab bar from image nad label
Implements NativeScript/nativescript-angular#1893 for iOS.
1 parent cc89f79 commit 53f1039

File tree

1 file changed

+19
-11
lines changed

1 file changed

+19
-11
lines changed

Diff for: tns-core-modules/ui/bottom-navigation/bottom-navigation.ios.ts

+19-11
Original file line numberDiff line numberDiff line change
@@ -399,21 +399,15 @@ export class BottomNavigation extends TabNavigationBase {
399399
items.forEach((item, i) => {
400400
const controller = this.getViewController(item);
401401

402-
let icon = null;
403-
let title = "";
404-
405402
if (this.tabStrip && this.tabStrip.items && this.tabStrip.items[i]) {
406-
const tabStripItem = <TabStripItem>this.tabStrip.items[i];
407-
icon = this._getIcon(tabStripItem.iconSource);
408-
title = tabStripItem.title;
409-
410-
const tabBarItem = UITabBarItem.alloc().initWithTitleImageTag((title || ""), icon, i);
411-
updateTitleAndIconPositions(tabStripItem, tabBarItem, controller);
403+
const item = <TabStripItem>this.tabStrip.items[i];
404+
const tabBarItem = this.createTabBarItem(item, i);
405+
updateTitleAndIconPositions(item, tabBarItem, controller);
412406

413407
applyStatesToItem(tabBarItem, states);
414408

415409
controller.tabBarItem = tabBarItem;
416-
tabStripItem.setNativeView(tabBarItem);
410+
item.setNativeView(tabBarItem);
417411
}
418412

419413
controllers.addObject(controller);
@@ -426,6 +420,20 @@ export class BottomNavigation extends TabNavigationBase {
426420
this._ios.moreNavigationController.delegate = this._moreNavigationControllerDelegate;
427421
}
428422

423+
private createTabBarItem(item: TabStripItem, index: number): UITabBarItem {
424+
let image: UIImage;
425+
let title: string;
426+
427+
// Image and Label children of TabStripItem
428+
// take priority over its `iconSource` and `title` properties
429+
image = item.image ? this._getIcon(item.image.src) : this._getIcon(item.iconSource);
430+
title = item.label ? item.label.text : item.title;
431+
432+
const tabBarItem = UITabBarItem.alloc().initWithTitleImageTag(title, image, index);
433+
434+
return tabBarItem;
435+
}
436+
429437
private _getIconRenderingMode(): UIImageRenderingMode {
430438
return UIImageRenderingMode.AlwaysOriginal;
431439
}
@@ -523,4 +531,4 @@ function getTitleAttributesForStates(tabView: BottomNavigation): TabStates {
523531
function applyStatesToItem(item: UITabBarItem, states: TabStates) {
524532
item.setTitleTextAttributesForState(states.normalState, UIControlState.Normal);
525533
item.setTitleTextAttributesForState(states.selectedState, UIControlState.Selected);
526-
}
534+
}

0 commit comments

Comments
 (0)