簡體   English   中英

只有圖像為UITabBarItem

[英]Only image as UITabBarItem

我只想有一個圖標作為UITabBarItem,而不是下面的文字,我想知道這是否可能,如果是的話,怎么樣? TIA

如果您使用故事板,也許您可​​以使用條形圖的尺寸檢查器中的Image Inset並同時將標題設置為空:

在此輸入圖像描述

刪除標題

檢查員的簡單方法

  • 選擇TabbarItem
  • 標題位置更改為自定義偏移
  • 垂直設置為100
  • 完成

在此輸入圖像描述

修復圖片

調整圖像

  • 選擇TabbarItem
  • 定義你的頂部底部

在此輸入圖像描述

如果您只是設置圖像並將nil傳遞給title,則圖像將顯示在UITabBar項目的頂層。 你還必須設置位置。

int offset = 7;
UIEdgeInsets imageInset = UIEdgeInsetsMake(offset, 0, -offset, 0);

為TabBarItem設置圖標圖像后,設置屬性值以更改圖像位置,執行以下操作:

uiViewController.tabBarItem.imageInsets = imageInset;

將項目標題設置為nil通常是不夠的,因為如果設置視圖控制器的標題,它也將設置標簽欄項目的標題。

相反,這樣做:

tabbarItem.titlePositionAdjustment = UIOffsetMake(0.f, 50.f);

您可以使用此Swift擴展來定義一個新方法tabBarItemShowingOnlyImage() ,它將返回任何修改后的UITabBarItem以僅顯示圖像:

// helper for creating an image-only UITabBarItem
extension UITabBarItem {
    func tabBarItemShowingOnlyImage() -> UITabBarItem {
        // offset to center
        self.imageInsets = UIEdgeInsets(top:6,left:0,bottom:-6,right:0)
        // displace to hide
        self.setTitlePositionAdjustment(UIOffset(horizontal:0,vertical:30000))
        return self
    }
}

此擴展程序基於其他評論中提供的建議。

它通過替換標題來隱藏標題,而不是將其設置為nil ,因為有時其他對象(如視圖控制器本身)會在標簽欄項初始化后將標題設置為某個值。 它通過使用imageInsets使圖像imageInsets使其偏移6pt,這是我在運行iOS8.3的iPhone 6上觀察到的值。

我想其他設備和布局配置可能需要不同的偏移校正,因此一般的解決方案可能必須更復雜。

我知道已經有一段時間了。 但我可能有解決這個問題的方法。

@ThiagoPires答案僅在圖像足夠大以覆蓋標題時才有用。 如果不是,則標題將在圖像下可見。

我認為最簡單的方法是在視圖控制器代碼中將tabBarItem的標題設置為“”。

重要的是要知道每次更改視圖控制器標題時,tabbaritem的標題也會更新。 您可以使用KVO來觀察標題的變化並相應地將“”設置為tabbaritem標題。 但是如果你不在代碼中的許多地方更改它,你可以在你更改ViewController標題的地方設置它。

這是swift中的一個例子:

override func viewDidLoad() {

    super.viewDidLoad()

    self.title = "View controller's Title"

    self.tabBarItem.title = ""
}

而已。 我希望這可以有所幫助。

相關文檔(突出我的):

initWithTitle:image:tag:使用指定的屬性創建並返回一個新項。

- (id)initWithTitle:(NSString *)title image:(UIImage *)image tag:(NSInteger)tag

參數

title:項目的標題。 如果為nil,則不顯示標題。

image:項目的圖像。 如果為nil,則不顯示圖像。 標簽欄上顯示的圖像來自此圖像。 如果此圖像太大而無法放在標簽欄上,則會將其剪裁以適合。 標簽欄圖像的大小通常為30 x 30點。 源圖像中的Alpha值用於創建未選擇和選定的圖像 - 忽略不透明值。

tag:接收者的標記,一個整數,可用於標識應用程序中的條形項對象。

返回值:具有指定屬性的新初始化項。

像這樣

UITabBarItem * personalBarItem = [[UITabBarItem alloc] init];
[personalBarItem setFinishedSelectedImage:[UIImage imageNamed:@"personal_click"] withFinishedUnselectedImage:[UIImage imageNamed:@"personal"]];

試試以下代碼:

UIViewController *viewController1=[[RootViewController alloc]initWithNibName:@"RootViewController" bundle:nil];
UIViewController *viewController2=[[SecondViewCtr alloc]initWithNibName:@"SecondViewCtr" bundle:nil];
UIViewController *viewController3=[[ThirdViewCtr alloc]initWithNibName:@"ThirdViewCtr" bundle:nil];
UIViewController *viewController4=[[FourthVIewCtr alloc]initWithNibName:@"FourthVIewCtr" bundle:nil];
UIViewController *viewController5=[[FIfthViewCtr alloc]initWithNibName:@"FIfthViewCtr" bundle:nil];


UINavigationController *nav1 = [[UINavigationController alloc] initWithRootViewController:viewController1];
UINavigationController *nav2 = [[UINavigationController alloc] initWithRootViewController:viewController2];
UINavigationController *nav3 = [[UINavigationController alloc] initWithRootViewController:viewController3];
UINavigationController *nav4 = [[UINavigationController alloc] initWithRootViewController:viewController4];
UINavigationController *nav5 = [[UINavigationController alloc] initWithRootViewController:viewController5];
peekArray = [[NSMutableArray alloc] init];

self.tabBarController = [[UITabBarController alloc] init];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:nav1, nav2,nav3,nav4,nav5, nil];

UITabBar *tabBar = _tabBarController.tabBar;
UITabBarItem *tabBarItem1 = [tabBar.items objectAtIndex:0];
UITabBarItem *tabBarItem2 = [tabBar.items objectAtIndex:1];
UITabBarItem *tabBarItem3 = [tabBar.items objectAtIndex:2];
UITabBarItem *tabBarItem4 = [tabBar.items objectAtIndex:3];
UITabBarItem *tabBarItem5 = [tabBar.items objectAtIndex:4];

[tabBarItem1 setFinishedSelectedImage:[UIImage imageNamed:@"home123.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"home_112.png"]];
[tabBarItem2 setFinishedSelectedImage:[UIImage imageNamed:@"gift123.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"gift_112.png"]];
[tabBarItem3 setFinishedSelectedImage:[UIImage imageNamed:@"cam12.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"cam_112.png"]];
[tabBarItem4 setFinishedSelectedImage:[UIImage imageNamed:@"message12.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"message_112.png"]];
[tabBarItem5 setFinishedSelectedImage:[UIImage imageNamed:@"people12.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"people_112.png"]];

[self.tabBarController setSelectedIndex:0];
self.window.rootViewController = self.tabBarController;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM