iOS 7 UIBarButton返回按钮箭头颜色
iOS 7 UIBarButton返回按钮箭头颜色
我想改变返回按钮箭头的颜色。我目前使用以下代码来控制返回按钮的文本大小和文本颜色:\n
[[UIBarButtonItem appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys: [UIColor whiteColor], UITextAttributeTextColor, [UIFont boldSystemFontOfSize:16.0f], UITextAttributeFont, [UIColor darkGrayColor], UITextAttributeTextShadowColor, [NSValue valueWithCGSize:CGSizeMake(0.0, -1.0)], UITextAttributeTextShadowOffset, nil] forState:UIControlStateNormal];
\n但是如果我只想改变返回按钮箭头的颜色,我该怎么做呢?
在iOS 7中,当设置整个应用程序导航栏的颜色时,可以使用上述方法。通过调用setTintColor
方法,可以设置导航栏的整体颜色。在该示例中,将导航栏的颜色设置为白色。
然而,如果想要单独修改返回按钮的箭头颜色,上述方法并不能实现。这是因为返回按钮的箭头颜色是由系统自动确定的,无法直接通过setTintColor
方法修改。
要解决这个问题,可以使用自定义图片来替代返回按钮的箭头图标。需要创建一个自定义的返回按钮图片,并将其设置为UIBarButtonItem
的backButtonBackgroundImage
属性。这样就可以通过修改自定义图片的颜色来改变返回按钮的箭头颜色。
下面是一种实现的方法:
1. 创建一个包含箭头图标的自定义图片,可以使用图像处理软件(如Photoshop)来创建。
2. 在应用程序的启动方法application: didFinishLaunchingWithOptions:
中添加以下代码:
[[UINavigationBar appearance] setBackIndicatorImage:[UIImage imageNamed:@"customBackButton"]]; [[UINavigationBar appearance] setBackIndicatorTransitionMaskImage:[UIImage imageNamed:@"customBackButton"]];
3. 将自定义图片命名为customBackButton
并将其添加到项目中。
4. 在需要修改返回按钮箭头颜色的视图控制器中,添加以下代码:
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil]; self.navigationItem.backBarButtonItem = backButton;
5. 运行应用程序,返回按钮的箭头颜色将根据自定义图片的颜色而改变。
通过以上步骤,可以实现在iOS 7中修改返回按钮箭头颜色的效果。通过创建自定义图片并设置为backIndicatorImage
属性,可以修改返回按钮的箭头颜色,从而实现特定需求。
问题的出现原因是因为要改变iOS 7中导航栏返回按钮的箭头颜色,需要设置整个应用程序的tintColor属性。而解决方法是在应用程序的delegate中的applicationDidFinishLaunchingWithOptions方法中添加代码:window.tintColor = [UIColor blackColor]。这样设置tintColor属性会影响整个应用程序的颜色,包括UIActivityViewController(用于分享)和MFMailComposeViewController(用于发送电子邮件)等对话框。因此,不推荐使用这种方法来改变返回按钮的箭头颜色,因为它会影响到其他对象的颜色,如UITextField中的闪烁光标。
问题的原因是在iOS 7中更改导航栏返回按钮箭头颜色的方法发生了变化。解决方法是使用以下代码更改导航控制器的返回按钮箭头颜色:
self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
如果应用程序中有多个导航控制器,并且希望将此箭头颜色应用于每个导航控制器,则可以使用外观代理来设置每个导航控制器的返回按钮箭头颜色,代码如下:
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
对于Swift语言,可以使用以下代码:
UINavigationBar.appearance().tintColor = UIColor.whiteColor()
如果希望在整个应用程序中应用此更改,可以使用相同的导航控制器。但是,建议使用Bart的建议。关于多个导航控制器的问题,我更新了我的答案。我仍然不同意Bart的建议是“正确”的答案,因为在将整个应用程序的色调颜色设置为这样时会产生许多其他副作用。原问题只是询问如何设置返回按钮的主题颜色。
在iOS 11中,似乎需要在导航栏按钮项上设置色调颜色,代码如下:
self.navigationItem.backBarButtonItem.tintColor = myColor;
以上是关于iOS 7导航栏返回按钮箭头颜色问题的原因和解决方法的整理。