UIBarButtonItem關於全域性修改,區域性修改
阿新 • • 發佈:2019-01-28
轉載於:http://www.cnblogs.com/Fc-ios/p/3794163.html
全域性修改:把所有UIBarButtonItem(或者一個控制元件)設為同一風格。
區域性修改:根據一定條件把一部分UIBarButtonItem(或者一個控制元件)設為同一風格
有時侯你想把導航條左側的所有按鈕的外觀,字型設定為同一風格,但你並不想把導航條左側按鈕外觀字型或背景全部用以下程式碼來更改,如果這樣改,有兩個UIBarButtonItem,你就要寫兩次,這樣寫程式碼過於贅餘,蘋果提供了更好的方法統一設定。
UIBarButtonItem *rightItem = [YBarButtonItem barButtonWithStyle:YBarButtonStyleRoundedRectangle Title:這裡就有個方法可以進行全域性或區域性的修改: !!!---本人開始用的時候也覺得奇怪,appearance方法怎麼可以設定讓所有同一種控制元件都為同一種風格,只能說是蘋果太強大,他封裝的了一個工具類UIAppearance可以統一設定控制元件的風格,當呼叫appearance方法時他會拿到相對應的控制元件(你用什麼控制元件呼叫appearace方法,他就會返回什麼控制元件),然後你可以設定統一主題(風格)---!!!@"Save" Action:@selector(saveButtonClicked) Delegate:self]; self.navigationItem.leftBarButtonItem = rightItem;
[[UINavigationBar appearance] setTintColor:myColor]; /** 這樣寫之後,所有的 UINavigationBar 的tintColor的顏色都為myColor */第二個方法是當出現在某個類的出現時候才會改變:例如:
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class1.修改背景:], [UIPopoverController class], nil] setTintColor:myPopoverNavBarColor];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:leftButton forState:0 barMetrics:UIBarMetricsDefault];2.修改字型,陰影,字型顏色
NSDictionary* textAttributes = [NSDictionary dictionaryWithObjectsAndKeys: BAR_BUTTON_TITLE_TEXT_COLOR,UITextAttributeTextColor, BAR_BUTTON_TITLE_FONT,UITextAttributeFont, BAR_BUTTON_TITLE_SHADOW_COLOR,UITextAttributeTextShadowColor, [NSValue valueWithCGSize:CGSizeMake(1, 1)],UITextAttributeTextShadowOffset, nil]; [[UIBarButtonItem appearance] setTitleTextAttributes:textAttributes forState:0];3,修改UIBarButtonItem中文字的位置:
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(2, -1) forBarMetrics:UIBarMetricsDefault];