【问题标题】:Blurring effect disappeared on iOS 7.1模糊效果在 iOS 7.1 上消失了
【发布时间】:2014-03-27 13:27:17
【问题描述】:

由于某种原因,模糊效果从我在 iOS 7.1 上的应用程序中消失了。我在一台装有 iOS 7.0.x 的设备上和另一台装有 7.1 的设备上运行相同的代码。这是我看到的:

iOS 7.0.x

iOS 7.1

可能是什么问题以及如何解决? (显然我想保持模糊效果:))

更新:

这是我设置的颜色:

    [UIColor colorWithRed:255.0f/255.0f
                       green:201.0f/255.0f
                        blue:0.0f/255.0f
                       alpha:1.0];

我从 barTintColor 属性设置它

【问题讨论】:

标签: ios iphone objective-c blur ios7.1


【解决方案1】:

可能第二张截图是从 iPhone 4 上截取的? 在 iPhone 4 和 iPad 2 上,模糊效果被替换为具有透明度的简单示例颜色。

【讨论】:

  • Apple 在 iOS 7.1 中对模糊效果进行了更改。将 iPhone 5C 升级到 iOS 7.1。
  • 好吧,这并不能真正解决我的问题。我想让模糊在 7.1 上工作
  • 尝试为颜色设置alpha < 1
  • 没试过,等一下
【解决方案2】:

顺便说一句,值得注意的是,您描述为没有模糊/半透明的图像实际上确实如此。如果您拍摄该快照并提高对比度,您可以看到背景中确实发生了一些事情。这是您原始的“无模糊/半透明图像”,我在 Photoshop 中提高了对比度:

除非您操纵图像,否则肉眼几乎看不到它,但实际上存在模糊/半透明。

【讨论】:

  • 我同意。我认为他们只是稍微缩小了半透明模糊。在我看来是正确的。 :)
  • 是的,我注意到它并不完全可靠。我也试过你的解决方案,但它在我安装了 7.1 的 5s 上不起作用。实际上更改 alpha 并没有任何区别:(
  • 您使用什么设备和 iOS 版本截取这些屏幕截图?
  • 我的错。在 7.1 设备上,alpha 设置无效。我已将其从答案中删除。
【解决方案3】:

Settings > General > Increase Contrast > Reduce Transparency 可能在 7.1 设备上启用。

【讨论】:

    【解决方案4】:

    概览

    似乎导航栏从iOS7.1 开始就不再有模糊效果了。至少我跑了很多测试,通过做新的应用示例,它不再有了。

    解决方法(适用于 iOS 7.1)

    Here a sample 使用 FXBlurView

    它并不出色,但可以正常工作并且可以自定义。我的例子肯定不是最好的。

    之前提出的解决方案(不适用于 iOS7.1)

    这是我找到类似效果的解决方案。可以发布它不使用私有 API。但由于它依赖于 UINavigationBar 的内部结构,因此它可能会在 iOS 的下一次更新中出现问题。

    只需在您的 viewDidLoad 或您想要的任何地方执行此操作即可:

    // First we make the background's navigation bar totally translucent
    self.navigationController.navigationBar.barTintColor = [UIColor clearColor];
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageWithColor:[UIColor clearColor]] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];
    
    // Then we create UIToolBar, which are still using blur effect
    UIToolbar *tab = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 64)];
    // We add it the barTintColor we want, works the same as since iOS 7.0.3, don't forget alpha value
    tab.barTintColor = [UIColor colorWithRed:0 green:1 blue:0 alpha:0.2];
    
    // And finally we add it to the background view of UINavigationBar... but it can change with future release of iOS. Be aware !
    [[self.navigationController.navigationBar.subviews firstObject] addSubview:tab];
    

    我还 建议您使用 AutoLayoutUIToolBar 限制为始终为其父级的大小,用于旋转等...我没有这样做它让代码简洁明了。

    希望对大家有帮助!

    【讨论】:

    • 嗨,Anc,谢谢你的提示,我稍后再试一下。但这对我的口味来说有点太老套了。即使它确实有效,我也不会最终使用它(不值得:))。但如果它有效,我会接受你的回答;)
    • 我猜你除了我的(或者更棘手的)别无选择
    • 不可能,写到这里之前我也试过了。您可以尝试一个新项目(简单视图之一),您会看到它有效。然后你就可以发现你的应用有什么不同了。
    • 你在 7.1 上试过了吗?
    • 我的错误,我最终混淆了设备
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-30
    • 2019-09-04
    • 2012-10-07
    • 1970-01-01
    • 2020-03-20
    • 2021-08-17
    相关资源
    最近更新 更多