使用UIAppearance API自定义UIBarButtonSystemItem的色调颜色
我知道我可以通过自定义UIBarButtonItem
文本
setTitleTextAttributes:forState:
还有一种通过自定义UITabBar
图标的方法
setSelectedImageTintColor:
有没有办法自定义UIBarButtonSystemItem
的色调(例如垃圾图标颜色),只是为了拥有一致的用户体验? 我找不到任何东西。
如果不可能,我该怎么办? 我应该保存图标的颜色修改版吗? 我在哪里可以找到它? 修改它最简单的方法是什么?
编辑
为了澄清,它不是我要求的UIBarButtonItem
的背景颜色,而是图标轮廓的颜色。
编辑
设置UIBarButtonItem
的色调颜色UIBarButtonItem
产生按钮组的背景颜色。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; [[UINavigationBar appearance] setTintColor:[UIColor greenColor]]; UIBarButtonItem* trashButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemTrash target:nil action:nil]; trashButton.tintColor = [UIColor blackColor]; UIViewController* viewController = [[UIViewController alloc] init]; UINavigationController* navController = [[UINavigationController alloc] initWithRootViewController:viewController]; [viewController.navigationItem setRightBarButtonItem:trashButton]; self.window.rootViewController = navController; return YES; }
产生这个 。
编辑2
事实certificate,系统图标的轮廓颜色实际上可以通过UIBarButtonItem
tintColor
属性设置,但UIBarButtonItem
是它的style
属性的值为UIBarButtonItemStylePlain
。 (即使这样,一些颜色是特殊的并且使轮廓保持白色。一种颜色是[UIColor blackColor]
)但是,在UINavigationBar
使用UIBarButtonItem
, style
被强制为UIBarButtonItemStyleBordered
。 在这种情况下, tintColor
设置按钮的背景颜色并使轮廓保持白色。
当我在导航栏中使用UIBarButtonItem
,我的问题仍然没有解决。
注意 :以下内容仅适用于添加到工具栏的按钮,而不适用于导航栏。
使用UIBarButtonItem
的tintColor
属性。 可以在特定实例上调用它,也可以在所有按钮项的appearance
上调用它。
小心通过appearance
设置所有按钮项目的色调。 设置色调时,并非所有按钮项都正确。
更新:
UIBarButtonItem *btnAdd = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addAction)]; btnAdd.tintColor = [UIColor blackColor];
这将使按钮的图标变为黑色(背景将是工具栏的色调)。
我通过在外部编辑器中更改条形按钮系统项png文件的颜色来解决我的问题,包括该图像到项目并通过
[[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"UIButtonBarTrashBlack"] style:UIBarButtonItemStyleBordered target:self action:@selector(myAction)];
我使用有用的UIKit-Artwork-Extractor找到了内部系统图像。
我使用免费软件GIMP编辑了艺术作品的颜色。
而不是使用黑色,使用此:
[UIColor colorWithRed:0绿色:0蓝色:0 alpha:1]; // [UIColor blackColor]使其变白