iOS中UIAppearance使用
來源:易賢網(wǎng) 閱讀:1001 次 日期:2015-02-10 13:40:34
溫馨提示:易賢網(wǎng)小編為您整理了“iOS中UIAppearance使用”,方便廣大網(wǎng)友查閱!

iOS5及其以后提供了一個(gè)比較強(qiáng)大的工具UIAppearance,我們通過UIAppearance設(shè)置一些UI的全局效果,這樣就可以很方便的實(shí)現(xiàn)UI的自定義效果又能最簡單的實(shí)現(xiàn)統(tǒng)一界面風(fēng)格,它提供如下兩個(gè)方法。

+ (id)appearance

這個(gè)方法是統(tǒng)一全部改,比如你設(shè)置UINavBar的tintColor,你可以這樣寫:[[UINavigationBar appearance] setTintColor:myColor];

+ (id)appearanceWhenContainedIn:(Class <>)ContainerClass,...

這個(gè)方法可設(shè)置某個(gè)類的改變:例如:設(shè)置UIBarButtonItem 在UINavigationBar、UIPopoverController、UITabbar中的效果。就可以這樣寫

[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], [UIPopoverController class],[UITabbar class] nil] setTintColor:myPopoverNavBarColor];

請(qǐng)注意*使用appearance設(shè)置UI效果最好采用全局的設(shè)置,在所有界面初始化前開始設(shè)置,否則可能失效。

支持UIAppearance協(xié)議的類可以訪問appearance selector ,它為receiver返回appearance proxy,我么可以給proxy發(fā)一些消息,諸如setTintColor:等

但是它并不是支持所有的UI類。下面列出它支持的類

1.UIActivitiIndicatorView

2.UIBarButtonItem

3.UIBarItem

4.UINavgationBar

5.UIPopoverControll

6.UIProgressView

7.UISearchBar

8.UISegmentControll

9.UISlider

10.UISwitch

11.UITabBar

12.UITabBarItem

13.UIToolBar

14.UIView

15.UIViewController

具體UI外觀修改如下:

1.修改導(dǎo)航欄背景

代碼如下:

UINavigationBar * appearance = [UINavigationBar appearance];

UIImage *navBackgroundImg =[UIImage imageNamed:@"navBg.png”];

[appearance setBackgroundImage:navBackgroundImgforBarMetrics:UIBarMetricsDefault];

2.標(biāo)簽欄(UITabbar)

代碼如下:

UITabBar *appearance = [UITabBar appearance];

//設(shè)置背景圖片

[appearance setBackgroundImage:[UIImage imageNamed:@"tabbar_bg.png"]];

//門置選擇item的背景圖片

UIImage * selectionIndicatorImage =[[UIImageimageNamed:@"tabbar_slider"]resizableImageWithCapInsets:UIEdgeInsetsMake(4, 0, 0,0)] ;

[appearance setSelectionIndicatorImage:selectionIndicatorImage];

3.分段控件(UISegmentControl)

代碼如下:

UISegmentedControl *appearance = [UISegmentedControl appearance];

//Segmenteg正常背景

[appearance setBackgroundImage:[UIImage imageNamed:@"Segmente.png"]

forState:UIControlStateNormal

barMetrics:UIBarMetricsDefault];

//Segmente選中背景

[appearance setBackgroundImage:[UIImage imageNamed:@"Segmente_a.png"]

forState:UIControlStateSelected

barMetrics:UIBarMetricsDefault];

//Segmente左右都未選中時(shí)的分割線

//BarMetrics表示navigation bar的狀態(tài),UIBarMetricsDefault 表示portrait狀態(tài)(44pixel height),UIBarMetricsLandscapePhone 表示landscape狀態(tài)(32pixel height)

[appearance setDividerImage:[UIImage imageNamed:@"Segmente_line.png"]

forLeftSegmentState:UIControlStateNormal

rightSegmentState:UIControlStateNormal

barMetrics:UIBarMetricsDefault];

[appearance setDividerImage:[UIImage imageNamed:@"Segmente_line.png"]

forLeftSegmentState:UIControlStateSelected

rightSegmentState:UIControlStateNormal

barMetrics:UIBarMetricsDefault];

[appearance setDividerImage:[UIImage imageNamed:@"Segmente_line.png"]

forLeftSegmentState:UIControlStateNormal

rightSegmentState:UIControlStateSelected

barMetrics:UIBarMetricsDefault];

//字體

NSDictionary *textAttributes1 = @{UITextAttributeFont: [UIFont systemFontOfSize:18],

UITextAttributeTextColor: [UIColor blueColor],

UITextAttributeTextShadowColor: [UIColor whiteColor],

UITextAttributeTextShadowOffset: [NSValuevalueWithCGSize:CGSizeMake(1, 1)]};

[appearance setTitleTextAttributes:textAttributes1 forState:1];

NSDictionary *textAttributes2 = @{UITextAttributeFont: [UIFont systemFontOfSize:18],

UITextAttributeTextColor: [UIColor whiteColor],

UITextAttributeTextShadowColor: [UIColor blackColor],

UITextAttributeTextShadowOffset: [NSValuevalueWithCGSize:CGSizeMake(1, 1)]};

[appearance setTitleTextAttributes:textAttributes2 forState:0];

4.UIBarbutton

注意:UIBarbutton有l(wèi)eftBarButton,rightBarButton和backBarButton,其中backBarButton由于帶有箭頭,需要單獨(dú)設(shè)置。

barButton背景設(shè)置是ios6.0及以后的,而backbutton是ios5.0及以后的,這里要注意!

代碼如下:

//修改導(dǎo)航條上的UIBarButtonItem

UIBarButtonItem *appearance = [UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil];

//設(shè)置導(dǎo)航欄的字體包括backBarButton和leftBarButton,rightBarButton的字體

NSDictionary *textAttributes = @{UITextAttributeFont: [UIFontsystemFontOfSize:18],

UITextAttributeTextColor: [UIColorblueColor],

UITextAttributeTextShadowColor: [UIColorwhiteColor],

UITextAttributeTextShadowOffset: [NSValuevalueWithCGSize:CGSizeMake(1, 1)]};

[appearance setTitleTextAttributes:textAttributes forState:1];//forState為0時(shí)為下正常狀態(tài),為1時(shí)為點(diǎn)擊狀態(tài)。

//修改leftBarButton,rightBarButton背景效果

[appearance setBackgroundImage:[UIImage imageNamed:@"navBarButton.png"]

forState:UIControlStateNormal

style:UIBarButtonItemStyleBordered

barMetrics:UIBarMetricsDefault];

[appearance setBackgroundImage:[UIImage imageNamed:@"navBarButton_a.png"]

forState:UIControlStateHighlighted

style:UIBarButtonItemStyleBordered

barMetrics:UIBarMetricsDefault];

//backBarButton需要單獨(dú)設(shè)置背景效果。只能在ios6.0以后才能用

[appearance setBackButtonBackgroundImage:[UIImage imageNamed:@"nav_bg.png"]

forState:0

barMetrics:UIBarMetricsDefault];

[appearance setBackButtonBackgroundImage:[UIImage imageNamed:@"work.png"]

forState:1

barMetrics:UIBarMetricsDefault];

[appearance setBackButtonTitlePositionAdjustment:UIOffsetMake(2, -1)

forBarMetrics:UIBarMetricsDefault];

5.工具欄(UIToolbar)

UIToolbar *appearance = [UIToolbar appearance];

//樣式和背景二選一即可,看需求了

//樣式(黑色半透明,不透明等)設(shè)置

[appearance setBarStyle:UIBarStyleBlackTranslucent];

//背景設(shè)置

[appearance setBackgroundImage:[UIImage imageNamed:@"toolbarBg.png"]

forToolbarPosition:UIToolbarPositionAny

barMetrics:UIBarMetricsDefault];

更多信息請(qǐng)查看IT技術(shù)專欄

更多信息請(qǐng)查看技術(shù)文章
易賢網(wǎng)手機(jī)網(wǎng)站地址:iOS中UIAppearance使用
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65317125(9:00—18:00) 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)