UIBarButtonItem被禁用,但具有正常的颜色
我有一个UIBarButtonItem
的问题。 我使用外观代理来为状态Normal
和Disabled
设置颜色,我在UIViewController
的viewDidLoad
方法中做这个。 但是,即使禁用该button,该button也会获得“ Normal
颜色(由于未调用IBAction
方法,该button肯定被禁用)。
问题类似于这个禁用的uibarbuttonitem的文本颜色总是正常状态的颜色 ,但是,这里发布的解决scheme不适用于我。
我的应用程序是用于iOS 8.2,我正在使用Xcode 6.2
有任何想法吗?
编辑 :我不知道这是否有助于find解决scheme,但是当我使用initWithImage:
创build我的buttoninitWithImage:
而不是initWithTitle:
一切似乎工作正常。 这可能是一个苹果的错误?
迅速
如果有人在寻找如何快速改变barbuttonitem禁用状态的外观。 干得好。
barButtonItem.setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.grayColor()], forState: UIControlState.Disabled)
用下面的code
检查。
- (void)viewDidLoad { [super viewDidLoad]; UIBarButtonItem * btnTemp = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(btnDone_Click:)]; [btnTemp setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor lightGrayColor], NSFontAttributeName:[UIFont boldSystemFontOfSize:16.0f]} forState:UIControlStateNormal]; [btnTemp setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor blueColor], NSFontAttributeName:[UIFont systemFontOfSize:16.0f]} forState:UIControlStateDisabled]; [self.navigationItem setRightBarButtonItem:btnTemp]; } - (void)btnDone_Click : (id)sender { UIBarButtonItem * button = (UIBarButtonItem *)sender; [button setEnabled:FALSE]; [self performSelector:@selector(enableButton:) withObject:sender afterDelay:2.0f]; } - (void)enableButton : (id)sender { UIBarButtonItem * button = (UIBarButtonItem *)sender; [button setEnabled:TRUE]; }
所以我终于设法得到这个工作,因为它应该,而问题是,我设置UIBarButtonItems的颜色两次,一次使用[navBar setTintColor:]和一次使用外观代理。 只留下外观代理解决了这个问题。
您可能已经为.Normal
状态设置了条形button项目标题文本属性,并且还需要将其设置为.Disabled
状态。
有两种方法可以解决这个问题,一种是在条形图button项实例上设置标题文本属性,另一种是在使用外观代理时。
单一实例:
saveButton.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.grayColor()], forState: .Disabled)
外观代理:
UIBarButtonItem.appearanceWhenContainedInInstancesOfClasses([MyNavigationController.self]).setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.grayColor()], forState: .Disabled)