UIVibrancyEffect在设备上变暗,在模拟器中充满活力

Mar*_*nHN 7 iphone ios swift ios8

我在iPhone 6上的渲染效果很差.

这是它的样子: 模拟器与设备

我检查了UIAccessibilityIsReduceTransparencyEnabled()它的值,它在设备和模拟器中都返回false.

我添加所有其他元素的背景图像,效果和containerView的代码如下所示:

import Foundation
import UIKit
import PureLayout

class BackgroundImageView : UIView {
    let bgImage = UIImageView(forAutoLayout: ())
    var blurView:UIVisualEffectView!
    var vibrancyView:UIVisualEffectView!

    var containerView: UIView? = nil {
        willSet(container) {
            vibrancyView.contentView.addSubview(container!)
        }
    }

    init(imageName: String) {
        super.init()

        let screenSize: CGRect = UIScreen.mainScreen().bounds

        bgImage.image = UIImage(named: imageName)
        // Scale relative to the size of the iPhone 6 Plus: http://martinnormark.com/smooth-transition-from-launch-image-to-view-controller-in-ios/
        bgImage.transform = CGAffineTransformMakeScale(screenSize.width / 414, screenSize.height / 736)

        self.addSubview(bgImage)

        let blurEffect = UIBlurEffect(style: .Dark)
        self.blurView = UIVisualEffectView(effect: blurEffect)
        self.blurView.setTranslatesAutoresizingMaskIntoConstraints(false)

        self.addSubview(blurView)

        let vibrancyEffect = UIVibrancyEffect(forBlurEffect: blurEffect)
        vibrancyView = UIVisualEffectView(effect: vibrancyEffect)
        vibrancyView.setTranslatesAutoresizingMaskIntoConstraints(false)

        blurView.contentView.addSubview(vibrancyView)
    }

    override init(frame: CGRect) {
        super.init(frame: frame)
    }

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

    override func updateConstraints() {
        super.updateConstraints()

        bgImage.autoCenterInSuperview()
        containerView?.autoPinEdgesToSuperviewEdgesWithInsets(UIEdgeInsetsZero)
        blurView.autoPinEdgesToSuperviewEdgesWithInsets(UIEdgeInsetsZero)
        vibrancyView.autoPinEdgesToSuperviewEdgesWithInsets(UIEdgeInsetsZero)
    }
}
Run Code Online (Sandbox Code Playgroud)

gab*_*ler 3

对于您的 iPhone 6 或 iPhone 6 plus 来说,这可能是UIAccessibilityDarkerSystemColorsEnabled()正确的,因此它看起来更暗。

要禁用它,请转到“设置”->“常规”->“辅助功能”->“增加对比度”->“加深颜色”,将其关闭应该可以。

编辑

如文档UIVibrancyEffect中所述。

活力效果取决于颜色。添加到 contentView 的任何子视图都必须实现tintColorDidChange 方法并相应地更新自身。具有 UIImageRenderingModeAlwaysTemplate 渲染模式的图像的 UIImageView 对象以及 UILabel 对象将自动更新。

我们应该使用渲染模式为 的图像UIImageRenderingModeAlwaysTemplate来使UIImageView对象自动更新。应用此功能可以使UIVibrancyEffectiPhone 设备充满活力。