我认为现有项目和iOS7.1存在一个有趣的问题。我的代码工作正常并正常运行;因为在我的设备上更新XCode和我的iOS有一个问题,导航栏中用于该项目的透明背景图像现在呈现两次,一次是正确的大小并再次被炸毁和模糊。代码仅通过app委托中的[UINavigationBar appearance]
api添加图像。要检查这不是我的代码的特定错误,我使用主要细节默认创建默认的xcode项目,将其设置为仅iPhone,添加一些新创建的图像并使用应用程序委托中的相同调用设置它们。这个项目有同样的问题,在这里是github:
UINavigationBarBug github source
这是相关的代码块:
- (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点高的导航栏应该水平缩放而不是垂直缩放。我也很确定在更新之前这个问题从未发生过(在将代码上传到苹果审核之前,内部QA会发现它。)
有两件事可以解决它:
1)使用不透明的图像,如果仍有问题,则会加载“正确的”图像,因为缺少透明度会覆盖错误渲染的图像。
2)使用66点高的导航栏(在项目中可用顶部透明部分作为TLS-ios7),更改应用委托中的代码以使用它来解决问题。
有谁能告诉我这里发生了什么?这是一个错误,是我的错,是否有一些文档告诉我为什么会这样?
谢谢!
**更新:我最近发现iPad还在运行iOS 7.0,这个问题不会发生。 **
答案 0 :(得分:2)
我的应用上遇到了类似的问题。我通过设置"半透明"解决了它。我的UINavigationBar对NO。
[self.navigationController.navigationBar setTranslucent:NO];
答案 1 :(得分:1)
我刚刚在我的错误报告中收到了这个... tl;博士我提供的图像高度不正确:
iOS 7.1的解决方法是指定具有非零插入的可调整大小的图像。如果内部UINavigationBar尺寸不合适,那么UINavigationBar会在内部平铺你的图像,这基本上就是这里发生的事情 - 因为图像不够高(导航栏顶部附着,所以图像需要是64pt高而不是44pt)它会平铺。如果将其设置为拉伸并配置cap insets,使其仅拉伸均匀的像素,则应该能够避免此问题。
答案 2 :(得分:0)
我有一个类似的问题,事实证明我在资产目录中没有正确的图像资产。我只有视网膜资产,但是当我进口时,他们进入了资产目录中的1x盒子 - 将它们移动到2x盒子里为我修复了导航栏。
答案 3 :(得分:0)
我有类似的问题,我有一个透明背景的徽标。身高很好。在彩色背景中添加并且问题已停止。
答案 4 :(得分:0)