在我的其他控制器中,它看起来像:
它始终使用来自资产的相同图像。我需要我的按钮永远是第二种变体。
第一个(错误)按钮声明如下:
bbiRight = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:riVM.itemPictureName] style:UIBarButtonItemStylePlain target:nil action:nil];
[RACObserve(((id<CDRRightNavItemProtocol>)self.viewModel), itemPictureName) subscribeNext:^(NSString * x) {
[bbiRight setImage:[UIImage imageNamed:x]];
}];
第二个(正确的)是:
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
[btn setImage: [UIImage imageNamed: @"m_starnotactive"] forState:UIControlStateNormal];
[btn setImage: [UIImage imageNamed: @"m_staractive"] forState:UIControlStateSelected];
btn.frame = (CGRect){88,11, 22,22};
btn.rac_command = self.viewModel.cmdSaveToFavorites;
RAC(btn, selected) = RACObserve(self.viewModel, inFavorites);
UIBarButtonItem *bbiFav = [[UIBarButtonItem alloc] initWithCustomView:btn];
self.navigationItem.rightBarButtonItem = bbiFav;
问题是,第一种情况是在我的应用程序中的许多类中使用的抽象类中使用,如何修改它以使我的条形按钮在选中时看起来不是白色?
答案 0 :(得分:1)
您可能希望setTitleColor:forState:
与UIControlStateHighlighted
或UIControlStateSelected
一起使用,以便在选择按钮时指定颜色。
如果您的图片资源是透明的,您可能还想尝试使用
imageWithRenderingMode:
UIImageRenderingModeAlwaysTemplate
tintColor
并根据您的要求使用printf %q
配置颜色。