How do you use setTitleTextAttributes:forState in UIBarItem? How do you use setTitleTextAttributes:forState in UIBarItem? ios ios

How do you use setTitleTextAttributes:forState in UIBarItem?


Example code:

[[UIBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor colorWithRed:220.0/255.0 green:104.0/255.0 blue:1.0/255.0 alpha:1.0], UITextAttributeTextColor, [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0], UITextAttributeTextShadowColor, [NSValue valueWithUIOffset:UIOffsetMake(0, 1)], UITextAttributeTextShadowOffset, [UIFont fontWithName:@"AmericanTypewriter" size:0.0], UITextAttributeFont, nil] forState:UIControlStateNormal];


Swift 5.0:

// Bar title text colorlet shadow = NSShadow()shadow.shadowColor = UIColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)shadow.shadowOffset = CGSize(width: 0, height: 1)let color : UIColor = UIColor(red: 220.0/255.0, green: 104.0/255.0, blue: 1.0/255.0, alpha: 1.0)let titleFont : UIFont = UIFont(name: "AmericanTypewriter", size: 16.0)!let attributes = [    NSAttributedString.Key.foregroundColor : color,    NSAttributedString.Key.shadow : shadow,    NSAttributedString.Key.font : titleFont]self.navigationItem.rightBarButtonItem?.setTitleTextAttributes(attributes, for: .normal)// Or you can useUIBarItem.appearance().setTitleTextAttributes(attributes, for: .normal)

Swift 4.0:

// Bar title text colorlet shadow = NSShadow()shadow.shadowColor = UIColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)shadow.shadowOffset = CGSize(width: 0, height: 1)let color : UIColor = UIColor(red: 220.0/255.0, green: 104.0/255.0, blue: 1.0/255.0, alpha: 1.0)let titleFont : UIFont = UIFont(name: "AmericanTypewriter", size: 16.0)!let attributes = [        NSAttributedStringKey.foregroundColor : color,        NSAttributedStringKey.shadow : shadow,        NSAttributedStringKey.font : titleFont    ]self.navigationItem.rightBarButtonItem?.setTitleTextAttributes(attributes, for: UIControlState.normal)// Or you can useUIBarItem.appearance().setTitleTextAttributes(attributes, for: UIControlState.normal)

Objective C code:

NSShadow *shadow = [NSShadow new];[shadow setShadowColor:[UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0]];[shadow setShadowOffset:CGSizeMake(0, 1)];NSDictionary *attributes = @{                                NSForegroundColorAttributeName: [UIColor colorWithRed:220.0/255.0 green:104.0/255.0 blue:1.0/255.0 alpha:1.0],                                NSShadowAttributeName: shadow,                                NSFontAttributeName: [UIFont fontWithName:@"AmericanTypewriter" size:16.0]                             };[self.navigationItem.rightBarButtonItem setTitleTextAttributes:attributes forState: UIControlStateNormal];// Or you can use.[[UIBarItem appearance] setTitleTextAttributes:attributes forState: UIControlStateNormal];


Here's phix23's code, just with an updated, and I think cleaner, syntax:

[[UIBarItem appearance] setTitleTextAttributes:@{                      UITextAttributeTextColor: [UIColor colorWithRed:220.0/255.0 green:104.0/255.0 blue:1.0/255.0 alpha:1.0],                UITextAttributeTextShadowColor: [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0],               UITextAttributeTextShadowOffset: [NSValue valueWithUIOffset:UIOffsetMake(0, 1)],                           UITextAttributeFont: [UIFont fontWithName:@"AmericanTypewriter" size:0.0]}                                      forState: UIControlStateNormal];