官术网_书友最值得收藏!

  • iPhone UIKit詳解
  • 王志剛 王中元 朱蕾編著
  • 1368字
  • 2019-01-01 07:04:26

3.3 UITabBarController的使用技巧

3.3.1 UITabBar的參照

管理標簽條的UITabBar類的實例,可以通過UITabBarController的tabBar屬性取得。UITabBar的items屬性中以NSArray形式保存管理的標簽條項目,當前選中的標簽(顯示的畫面)的索引保存在selectedItem屬性中。

另外,UITabBarController管理下的各UIViewController的tabBarItem屬性(注意UITabBarItem實例中UITabBarItem為UIBarItem的子類,與UIView間沒有繼承關系)也會自動追加到UITabBar的items屬性中。

3.3.2 系統圖標的使用

可以使用UIKit中提供的系統標簽項目作為標簽條的項目。針對特定的功能(或畫面),系統標簽項目提供與此功能相匹配的圖標圖片以及標題的組合。這樣不僅能簡單地設置標簽項目,而且因為使用了這些用戶已經習慣的標簽項目,將方便用戶更直觀地操作,應用程序的界面也將更加人性化。

通過在UITabBarItem初始化時調用initWithTabBarSystemItem:tag:方法來設置系統標簽項目。實例代碼如下。

// self為UITabBarController中設置的UIViewController的子類實例
self.tarBarItem = [[[UITabBarItem alloc] initWithTabBarSystemItem:U ITabBarSystemItemFeatured tag:0] autorelease];

如上述代碼中所示,通過在initWithTabBarSystemItem:tag:方法的第一個參數中指定UITabBarSystemItem類型的常量來設置各種系統標簽項目。不需要tag的話可將其設置成0。這樣就將創建的 UITabBarItem實例設置到UITabBarController中追加的各畫面的tabBarItem屬性中了。上述方法第一個參數中可指定的常量以及實際顯示的圖標列表如表3-1所示。

表3-1 系統標簽項目列表

3.3.3 自定義圖標的使用

上一小節介紹了如何向標簽條中設置系統標簽項目的方法。正如第3.2.1節中介紹的一樣,程序員還可以設置自定義圖標。這時在初始化UITabBarItem時需要使用initWithTitle:image:tag:方法。其中第一個參數中設置標簽條中顯示的標題,image中指定使用的圖標圖片(UIImage)。以下是具體的實例代碼。

// 導入圖標圖片
UIImage* icon = [UIImage imageNamed:@"ball1.png"];
// 指定標題與圖標圖片后設置UITabBarItem
self.tabBarItem =
         [[[UITabBarItem alloc] initWithTitle:@"Hello" image:icon tag:0] autorelease];

有一點需要特別注意,向image傳遞的圖標圖片有些特殊要求。此圖標圖片中需要同時存在透明色以及非透明色。在標簽條中顯示的圖標,單色的非透明色將被完全覆蓋,如圖3-11所示。正確的表述是,將按照圖標圖片的透明度(A值)來創建顯示的圖標。

圖3-11 標簽條的圖標圖片處理示意圖

表3-2是標簽條圖片在不同狀態下的顯示示例。

表3-2 標簽圖標的色彩配置

3.3.4 向標簽條中追加6個以上的畫面

大家可能已經注意到了,在標簽條上最多只能顯示5個圖標。如果需要設置6個以上的畫面的情況下,會出現什么情況呢?實際上表3-1中的UITabBarSystemItemMore圖標正是為出現此種情況而準備的。當向UITabBarController中設置10個畫面時,將顯示如圖3-12所示的畫面。

圖3-12 向UITabBarController中設置6個以上畫面時

此時,標簽條的第5個圖標將自動變成“更多”,當單擊“更多”圖標后,將在新畫面中顯示剩下的沒有顯示出來的圖標。當單擊畫面右上方的“編輯”按鈕后,還可以通過拖曳來改變圖標的顯示順序,如圖3-13所示。

圖3-13 改變圖標的顯示順序

UIKit提供了如上所述編輯功能,如果不想使用此編輯功能,可以通過將UITabBarController的customizableViewControllers屬性設置為nil來屏蔽此編輯功能。

上述customizableViewControllers屬性中原本保存著匹配圖標順序的各畫面實例組成的數組。默認設置了所有的畫面。例如,通過編輯customizableViewControllers屬性,可實現復雜的帶條件的畫面顯示定制順序。

// 設置了scene1~scene7的7個畫面
// 此時,事先將標簽條中顯示的三個畫面固定下來
// 但是,第4個畫面(scene4)將來有可能被其他任意畫面取代
self.CustomizableViewControllers =
   [NSArray arrayWithObjects:scene4,scene5,scene6,scene6,nil];

3.3.5 標簽條圖標上的標記

此節介紹關于標簽條項目的最后一項知識。iPhone手機中經常會顯示如圖3-14所示的效果,就是通常被稱為“標示(badge)”的圖形??梢酝ㄟ^設置UITabBarItem的badgeValue屬性來簡單地實現標示效果。其代碼如下。

圖3-14 標簽條圖標上的標示

// 首先創建標簽條圖標的實例
UITabBarItem*baritem = [[UITabBarItem alloc] initWithTabBarSyste mItem:UITabBarSystemItemMostViewed tag:0];
// 設置badgeValue中顯示的數字
baritem.badgeValue = @"1";
self.tabBarItem = baritem;
[baritem release];
主站蜘蛛池模板: 张家川| 龙胜| 锡林郭勒盟| 汶上县| 东辽县| 富顺县| 黎川县| 德令哈市| 万荣县| 溧阳市| 丰顺县| 贡嘎县| 松桃| 扎鲁特旗| 六安市| 新密市| 田林县| 防城港市| 松潘县| 县级市| 曲靖市| 台山市| 姜堰市| 天津市| 皋兰县| 和政县| 湘潭市| 拜泉县| 高阳县| 綦江县| 鄂托克前旗| 于都县| 湛江市| 扬中市| 四川省| 河间市| 韶关市| 岫岩| 六盘水市| 新巴尔虎左旗| 达孜县|