为什么无法设置 UIBarButtonItem Disabled状态的颜色

[right setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor redColor]} forState:UIControlStateDisabled];
这样设置了 Disabled 时候的颜色
但是
self.navigationItem.rightBarButtonItem.enabled=NO 后
依然是灰色的

应该使用

javascript[[UIBarButtonItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor redColor]} forState:UIControlStateDisabled];

参照UIBarItem.h里面的

javascript/* You may specify the font, text color, and shadow properties for the title in the text attributes dictionary, using the keys found in NSAttributedString.h. */
- voidsetTitleTextAttributes:NSDictionary *attributes forState:UIControlStatestate NS_AVAILABLE_IOS5_0 UI_APPEARANCE_SELECTOR;
- NSDictionary *titleTextAttributesForState:UIControlStatestate NS_AVAILABLE_IOS5_0 UI_APPEARANCE_SELECTOR;

这两个方法是Appearance protocol的方法。


应该是调用方法的时间点上有问题,这个是我的demo代码片段

javascript- instancetypeinitWithNibName:NSString *nibNameOrNil bundle:NSBundle *nibBundleOrNil
{ self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if self { [self setNaviagtionItem]; } return self;
} - instancetypeinit
{ self = [super init]; if self { [self setNaviagtionItem]; } return self;
} - idinitWithCoder:NSCoder *aDecoder
{ self = [super initWithCoder:aDecoder]; if self { [self setNaviagtionItem]; } return self;
} - voidsetNaviagtionItem
{ UIBarButtonItem *leftItem = [[UIBarButtonItem alloc] initWithTitle:@"bb" style:UIBarButtonItemStyleDone target:self action:nil]; self.navigationItem.leftBarButtonItem = leftItem; NSDictionary* textAttributes = [NSDictionary dictionaryWithObject: [UIColor blackColor] forKey: NSForegroundColorAttributeName]; [[UIBarButtonItem appearance] setTitleTextAttributes: textAttributes forState: UIControlStateNormal]; NSDictionary* textAttributes1 = [NSDictionary dictionaryWithObject: [UIColor brownColor] forKey: NSForegroundColorAttributeName]; [[UIBarButtonItem appearance] setTitleTextAttributes: textAttributes1 forState: UIControlStateDisabled]; NSDictionary* textAttributes2 = [NSDictionary dictionaryWithObject: [UIColor yellowColor] forKey: NSForegroundColorAttributeName]; [[UIBarButtonItem appearance] setTitleTextAttributes: textAttributes2 forState: UIControlStateSelected];
} - voidviewDidLoad { [super viewDidLoad]; [self setNaviagtionItem]; self.navigationItem.leftBarButtonItem.enabled = NO;
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注