我有一个时区选择器,它为iPhone和iPod之间的“完成”按钮显示不同的颜色:
iPhone :
的iPod :
以下是代码:
UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, 44)];
[toolbar setBarStyle:UIBarStyleBlackOpaque];
toolbar.barTintColor = [UIColor darkAppColor];
toolbar.translucent = NO;
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:nil];
// doneButton.tintColor = [UIColor redColor]; // this has no effect
// toolbar.tintColor = [UIColor redColor]; // this has no effect
UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
toolbar.items = @[flexibleSpace, doneButton];
AppConstants.m
@implementation UIColor
...
+ (UIColor *)darkAppColor
{
return [UIColor colorWithHex:0x054e85];
}
...
@end
我希望iPod屏幕看起来像iPhone的屏幕(没有浅蓝色的“完成”按钮)。奇怪的是,如果我改变这一行:
toolbar.barTintColor = [UIColor darkAppColor];
到
toolbar.barTintColor = [UIColor greenColor];
然后,拾取器的整个导航栏(包括“完成”按钮)是均匀的(虽然颜色错误)。正如您在上面代码中注释掉的行中所看到的,我也尝试更改“完成”按钮以及工具栏的tintColor属性,但这似乎根本没有效果。
这两款设备都运行iOS 10.2。
有人可以告诉我:
为什么iPhone和iPod处理此代码的方式不同?
为什么设置“toolbar”和“doneButton”的tintColor属性没有任何效果?
如何让iPod显示器与iPhone相匹配?