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];