在iOS7中,我创建了一个UIBarButtonItem
和init,其图像颜色为绿色。但UIBarButtonItem
图像的最终外观是具有相同形状但颜色不同的图像。颜色变为蓝色。
代码如下:
_recordVoiceItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"voiceIcon"] style:UIBarButtonItemStylePlain target:self action:nil];
_textView = [[UITextView alloc] initWithFrame:CGRectMake(40, 4, 220, BOTTOM_BAR_HEIGHT - 2*4)];
_textView.layer.borderWidth = 1.f;
_rightItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"modeIcon"] style:UIBarButtonItemStylePlain target:self action:nil];
_bottomBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, self.view.frame.origin.y + self.view.frame.size.height - BOTTOM_BAR_HEIGHT, self.view.frame.size.width, BOTTOM_BAR_HEIGHT)];
_bottomBar.items = @[_recordVoiceItem,[[UIBarButtonItem alloc] initWithCustomView:_textView],_rightItem];
[self.view addSubview:_bottomBar];
我尝试创建UIToolBar
并通过Interface Builder添加一些项目。外观很好。 UIBarButtonItem
图像的颜色是原始图像的颜色。
我怀疑我是否需要添加一些代码来设置UIToolBar
或UIBarButtonItem
的某些属性,如果我想通过编写代码来设置它。你能告诉我怎么做吗?
答案 0 :(得分:16)
虽然它不应该是必需的,但是自iOS7以来我的彩色UIBarButtonItem完成了:
目标C :
UIImage* itemImage= [UIImage imageNamed:@"menu.png"]; // Colored Image
itemImage = [itemImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
_itemButton = [[UIBarButtonItem alloc] initWithImage:itemImage style:UIBarButtonItemStyleBordered target:self action:@selector(itemSelected:event:)];
UIImageRenderingModeAlwaysOriginal 是此处的关键。
Swift 3 :
// Use the colored image menu.png as a UIBarButtonItem
if var itemImage = UIImage(named: "menu") {
itemImage = itemImage.withRenderingMode(.alwaysOriginal)
let itemButton = UIBarButtonItem(image: itemImage, style: .plain, target: self, action: #selector(self.itemSelected(_:)))
self.navigationItem.rightBarButtonItem = itemButton
}
再次, withRenderingMode(.alwaysOriginal)是关键。
答案 1 :(得分:0)
您必须使用以下代码:
_bottomBar.transculantColor = No;
[_bottomBar setBackgroundColor:[UIColor clearColor]];