Ban*_*ana 15 objective-c uibarbuttonitem ios
我有一个问题UIBarButtonItem.我使用外观代理为状态设置其颜色Normal,Disabled并且我在viewDidLoad方法中执行此操作UIViewController.但是,Normal即使禁用该按钮,该按钮也会获得颜色(并且由于IBAction未调用该方法,因此它肯定被禁用).
问题类似于这一个禁用的uibarbuttonitem的文本颜色总是正常状态的颜色,但是,这里发布的解决方案对我不起作用.
我的应用程序适用于iOS 8.2,我使用的是Xcode 6.2
有任何想法吗?
编辑:我不确定这是否有助于找到解决方案,但当我使用initWithImage:而不是initWithTitle:一切创建我的按钮似乎运作良好.这可能是一个苹果虫吗?
Swi*_*ter 29
如果有人在寻找如何改变barbuttonitem禁用状态的迅速.干得好.
barButtonItem.setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.lightGray], for: .disabled)
Run Code Online (Sandbox Code Playgroud)
请检查以下内容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];
}
Run Code Online (Sandbox Code Playgroud)
所以我终于设法让它正常工作,问题是我设置了两次UIBarButtonItems的颜色,一次使用[navBar setTintColor:]并使用外观代理.只留下外观代理解决了问题.
| 归档时间: |
|
| 查看次数: |
9973 次 |
| 最近记录: |