ipsw - ios7新功能




iOS 7 UIBarButton後退按鈕箭頭顏色 (12)

我正在嘗試更改後退按鈕箭頭

我目前正在使用以下內容來控製文本大小以及後退按鈕上的文本顏色:

[[UIBarButtonItem appearance] setTitleTextAttributes:
  [NSDictionary dictionaryWithObjectsAndKeys:
    [UIColor whiteColor], UITextAttributeTextColor,
    [UIFont boldSystemFontOfSize:16.0f], UITextAttributeFont,
    [UIColor darkGrayColor], UITextAttributeTextShadowColor,
    [NSValue valueWithCGSize:CGSizeMake(0.0, -1.0)], UITextAttributeTextShadowOffset,
  nil] forState:UIControlStateNormal];

但如果我只想更改後退按鈕的箭頭顏色,我該怎麼辦?


Swift 2.0:著色導航欄和按鈕

navigationController?.navigationBar.barTintColor = UIColor.blueColor()
navigationController?.navigationBar.tintColor = UIColor.whiteColor()
navigationController!.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]

更新Swift 3

navigationController?.navigationItem.rightBarButtonItem?.tintColor = UIColor.yellow
navigationController?.navigationBar.tintColor = UIColor.red
navigationController?.navigationBar.barTintColor = UIColor.gray
navigationController?.navigationBar.titleTextAttributes =  [NSForegroundColorAttributeName: UIColor.blue]

結果:


只需要改變NavigationBar顏色,你可以像下面那樣設置色調。

[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];

在iOS 6中,tintColor著色導航欄,選項卡欄,工具欄,搜索欄和範圍欄的背景。 要在iOS 7中著色條形背景,請改為使用barTintColor屬性。

iOS 7設計資源iOS 7 UI過渡指南


在swift 3中,更改UIBarButton返回按鈕的箭頭顏色

self.navigationController?.navigationBar.tintColor = UIColor.black

在初始化navigationController的rootViewController裡面,我把這段代碼放入我的viewDidAppear方法中:

//set back button color
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], UITextAttributeTextColor,nil] forState:UIControlStateNormal];
//set back button arrow color
[self.navigationController.navigationBar setTintColor:[UIColor whiteColor]];

如果您只想更改整個應用的後退箭頭,請執行以下操作:

[[NSClassFromString(@"_UINavigationBarBackIndicatorView") appearance] 
  setTintColor:[UIColor colorWithHexString: @"#f00000"]];

如果您正在使用故事板,則可以設置導航欄的色調顏色。


您可以在按鈕(或欄按鈕項目)或視圖控制器的視圖上設置tintColor屬性。 默認情況下,該屬性將繼承父視圖的色調,直至應用的頂層UIWindow


我不得不同時使用:

[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] 
                     setTitleTextAttributes:[NSDictionary 
               dictionaryWithObjectsAndKeys:[UIColor whiteColor], UITextAttributeTextColor,nil] 
                                   forState:UIControlStateNormal];

[[self.navigationController.navigationBar.subviews lastObject] setTintColor:[UIColor whiteColor]];

並為我工作,謝謝大家!


這樣就可以改變箭頭的顏色(不是後退按鈕標題的顏色):

[[self.navigationController.navigationBar.subviews lastObject] setTintColor:[UIColor blackColor]];

導航欄包含代表箭頭的_UINavigationBarBackIndicatorView類型(子視圖數組中的最後一項)的子視圖。

結果是具有不同顏色的後退按鈕箭頭和後退按鈕標題的導航欄


UINavigationBar *nbar = self.navigationController.navigationBar;

if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) {
   //iOS 7
   nbar.barTintColor = [UIColor blueColor]; // bar color
   //or custom color 
   //[UIColor colorWithRed:19.0/255.0 green:86.0/255.0 blue:138.0/255.0 alpha:1];

   nbar.navigationBar.translucent = NO;

   nbar.tintColor = [UIColor blueColor]; //bar button item color

} else {
   //ios 4,5,6
   nbar.tintColor = [UIColor whiteColor];
   //or custom color
   //[UIColor colorWithRed:19.0/255.0 green:86.0/255.0 blue:138.0/255.0 alpha:1];

}




ios7