【问题标题】:iOS 7 UINavigationBar Background image hides Title viewiOS 7 UINavigationBar 背景图像隐藏标题视图
【发布时间】:2013-09-20 05:24:40
【问题描述】:

我制作了 iOS 应用,我希望我的应用与 iOS 7 兼容

我面临的问题是,当我在 iOS 7 上运行我的应用程序时,我的 UINavigationBar 的背景图像隐藏了我的 titleviewback button

:

-(void)viewDidLoad
{
    [super viewDidLoad];

    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"top.png"] forBarMetrics:UIBarMetricsDefault];

    self.title=@"Artist";
    self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];


}

当我将UINavigationBar 的背景图片设置为nil 时,它显示titleviewback button

当我在 iOS 7 之前运行我的应用程序时,它可以正常工作。

请帮忙。 提前致谢。

【问题讨论】:

  • navigationBar 的 tintColor 值是多少?
  • [[UIBarButtonItem appearance] setTintColor:[UIColor colorWithRed:6.0/255.0 green:12.0/255.0 blue:19.0/255.0 alpha:1.0]];
  • 这种色调看起来很暗,背景图像也是如此。尝试将您的 tint 颜色设置为 whiteColor,看看会发生什么

标签: iphone ios objective-c ipad ios7


【解决方案1】:

tintColor 的 bar 行为在 iOS 7.0 上发生了变化,请查看下图:

你可以看到

tintColor: 是导航栏中交互元素的颜色,包括按钮图像和标题。

barTintColorUINavigationBar 的背景色。

对于您的问题:您可以执行以下操作:

navigationBar.tintColor = [UIColor whiteColor];
navigationBar.barTintColor = [UIColor colorWithRed:6.0/255.0 green:12.0/255.0 blue:19.0/255.0 alpha:1.0];

【讨论】:

  • 我建议删除您为导航栏所做的所有外观设置,并先尝试默认设置。
  • barTintColor 在 iOS 6 上崩溃
  • 会的,只适用于iOS7,需要检查iOS版本并使用正确的属性。
【解决方案2】:

默认字体颜色为黑色,因此您可能在黑色背景上绘制黑色字体。请尝试以下操作:

[[UINavigationBar appearance] setTitleTextAttributes:
                              [NSDictionary dictionaryWithObjectsAndKeys:
                              [UIColor whiteColor], NSForegroundColorAttributeName,nil]];

【讨论】:

    【解决方案3】:

    在视图的属性检查器上检查属性扩展边缘,这会将边缘从导航栏底部扩展到屏幕顶部,因此您的背景图像将位于正确的位置

    如果您想了解有关 ios7 新事物的更多信息,请查看 ios7 转换指南 https://developer.apple.com/library/prerelease/ios/documentation/UserExperience/Conceptual/TransitionGuide/index.html

    【讨论】:

    • 属性检查器的扩展边在哪里?
    • 我添加了一个截图。您可以在类别扩展边缘的顶部栏下看到选项,选中此选项
    • 是的,我已经检查了您检查过的所有四个选项仍然无法正常工作。 i.imgur.com/0ydD1Y8.png
    • 那么我不确定解决方案是什么,也许这个网页可以帮助appdesignvault.com/ios-7-update
    • 我也写过,if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) { self.edgesForExtendedLayout=NO; } in viewDidLoad
    【解决方案4】:

    以下代码对我有用

    在 viewDidLoad 中

        self.navigationController.navigationBar.tintColor=[UIColor whiteColor];
    

    【讨论】:

    • 我在导航栏上使用图像而不是颜色。
    • 我也在使用图像作为导航栏。这些代码对我有用。设置色调颜色的最佳位置是在初始化导航栏时。假设你有 UINavigationController *myNavController=.... myNavController.navigationBar.tintColor=[UIColor whiteColor]; ...self.navigationController.navigationBar.tintColor=[UIColor whiteColor];覆盖默认颜色...
    猜你喜欢
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多