Change font of back navigation bar button

前端 未结 7 1125
走了就别回头了
走了就别回头了 2020-12-04 17:38

I want to be able to set the font of my apps navigation bar back button without doing anything too crazy and without losing any other design characteristics of the button (i

7条回答
  •  Happy的楠姐
    2020-12-04 18:07

    To change the appearance of the text in all UIBarButtonItems appearing in all UINavigationBars, do the following in application:didFinishLaunchingWithOptions:

    [[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTitleTextAttributes:
        @{UITextAttributeTextColor:[UIColor blackColor],
         UITextAttributeTextShadowOffset:[NSValue valueWithUIOffset:UIOffsetMake(0, 1)],
         UITextAttributeTextShadowColor:[UIColor whiteColor],
         UITextAttributeFont:[UIFont boldSystemFontOfSize:12.0]
        }
         forState:UIControlStateNormal];
    

    UPDATE: iOS7 friendly version

    NSShadow *shadow = [[NSShadow alloc] init];
    shadow.shadowOffset = CGSizeMake(0.0, 1.0);
    shadow.shadowColor = [UIColor whiteColor];
    
    [[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil]
     setTitleTextAttributes:
     @{NSForegroundColorAttributeName:[UIColor blackColor],
       NSShadowAttributeName:shadow,
       NSFontAttributeName:[UIFont boldSystemFontOfSize:12.0]
       }
     forState:UIControlStateNormal];
    

    Swift:

    NOTE: this changes ALL instances of UIBarButtonItem, not just those contained within a UINavigationBar

    UIBarButtonItem.appearance()
                   .setTitleTextAttributes([NSFontAttributeName : ExamplesDefaults.fontWithSize(22)], 
                                           forState: UIControlState.Normal)
    

    Swift3:

    UIBarButtonItem.appearance()
         .setTitleTextAttributes([NSFontAttributeName: UIFont(name: "FontName-Regular", size: 14.0)!], 
                                 for: .normal) 
    

提交回复
热议问题