繁体   English   中英

UINavigationBar外观背景图像在iOS 7.1中重复和模糊

[英]UINavigationBar appearance background image duplicated and blurred in iOS 7.1

我认为现有的项目和iOS7.1有一个有趣的问题。 我的代码工作正常并正常运行; 因为在我的设备上更新XCode和我的iOS有一个问题,导航栏中用于该项目的透明背景图像现在呈现两次,一次是正确的大小并再次被炸毁和模糊。 代码仅通过app委托中的[UINavigationBar appearance] api添加图像。 要检查这不是我的代码的特定错误,我使用主要细节默认创建默认的xcode项目,将其设置为仅iPhone,添加一些新创建的图像并使用应用程序委托中的相同调用设置它们。 这个项目有同样的问题,在这里是github:

UINavigationBarBug github源码

这是相关的代码块:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"TLS.png"]
                                       forBarMetrics:UIBarMetricsDefault];
    [[UINavigationBar appearance] setBarTintColor:RGB(233, 155, 20)];
    [[UINavigationBar appearance] setTintColor:RGB(245, 245, 245)];

    return YES;
}

问题的截图:

导航栏图像问题

看看转换文档我在这里做的应该没问题,44点高的导航栏应该水平缩放而不是垂直缩放。 我也非常确定在更新之前这个问题从未发生过(在将代码上传到apple进行审核之前,内部QA会发现它)。

有两件事可以解决它:

1)使用非透明图像,如果它仍有问题,则加载“正确”图像,并且由于缺少透明度而覆盖错误渲染的图像。

2)使用66点高的导航栏(在项目中可用顶部透明部分作为TLS-ios7),更改应用委托中的代码以使用它来修复问题。

任何人都可以告诉我这里发生了什么? 这是一个错误,是我的错,是否有一些文档告诉我为什么会这样?

谢谢!

**更新:我最近发现iPad还在运行iOS 7.0,这个问题不会发生。 **

我的应用程序上有类似的问题。 我通过将我的UINavigationBar的“半透明”设置为NO来解决它。

[self.navigationController.navigationBar setTranslucent:NO];

我刚收到这个跟踪我的错误报告... tl; dr这是我提供的图像高度不正确:

iOS 7.1的解决方法是指定具有非零插入的可调整大小的图像。 内部UINavigationBar会在你的图像尺寸不合适的情况下平铺你的图像,这基本上就是这里发生的 - 因为图像不够高(导航栏顶部附着,所以图像需要高64pt而不是44pt它会得到平铺。 如果将其设置为拉伸并配置cap insets,使其仅拉伸均匀的像素,则应该能够避免此问题。

我有一个类似的问题,事实证明我在资产目录中没有正确的图像资产。 我只有视网膜资产,但是当我进口时,他们进入了资产目录中的1x盒子 - 将它们移动到2x盒子里为我固定了我的导航栏。

我遇到了类似的问题,我有一个透明背景的徽标。 身高很好。 添加彩色背景,问题停止。

您可以通过定义左上角和上限来禁用图像拉伸。 这是一个Swift 3解决方案:

let navbarImage = image.stretchableImage(withLeftCapWidth: 1, topCapHeight: 1)
UINavigationBar.appearance().setBackgroundImage(navbarImage, for: .default)

以前的例子: 在此输入图像描述

并在修复之后: 在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM