我正在尝试为其上的导航栏和按钮实现自定义图像。我设法使用此
为我的导航背景设置了正确的设置
- (void)customAppearance
{
UIImage* NavBG = [UIImage imageNamed:@"header.png"];
[[UINavigationBar appearance] setBackgroundImage:NavBG forBarMetrics:UIBarMetricsDefault];
}
但是当我尝试为后退按钮或其他按钮做类似的事情时,它们只是混合在一起(我可以看到后退按钮的字样,但没有后退按钮的轮廓)
这是我的后退按钮
UIImage *backButtonBG = [[UIImage imageNamed:@"header.png"]resizableImageWithCapInsets:UIEdgeInsetsMake(0, 13, 0, 6)];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonBG forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
我希望看起来像这样:
答案 0 :(得分:1)
我认为最简单的方法是让你也修改导航栏,因为默认情况下那些条形物品总是使用导航栏的颜色。
[[UINavigationBar appearance] setTintColor:[UIColor redColor]];
或者您可以使用rgb值
来使用更精确的颜色[[UINavigationBar appearance] setTintColor:[UIColor colorWithRed:val green:val blue:val alpha:1]];
答案 1 :(得分:0)
我使用自定义图像创建了我的有色按钮(请参阅末尾的代码)然后只需将leftBarButtonItem
设置为此按钮即可。
+ (UIBarButtonItem *)createBarButtonItemWithImage:(UIImage *)normalImage highlightedImage:(UIImage *)highlightedImage
{
UIBarButtonItem *barButtonItemToReturn;
if (normalImage == nil && highlightedImage == nil)
{
return barButtonItemToReturn;
}
else if (normalImage != nil)
{
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:normalImage forState:UIControlStateNormal];
if (highlightedImage != nil)
{
[button setImage:highlightedImage forState:UIControlStateHighlighted];
[button setFrame:CGRectMake(0, 0, normalImage.size.width, normalImage.size.height)];
}
barButtonItemToReturn = [[UIBarButtonItem alloc] initWithCustomView:button];
}
return barButtonItemToReturn;
}
如果要添加目标/操作,则必须通过以下方式添加:
[((UIButton*)barButtonItem.customView) addTarget:self selector:@selector(doSomething:) forControlEvents:UIControlEventTouchUpInside];
您还可以使用可调整大小的图片等