In my ViewController.swift:
var img = UIImageView(image: UIImage(named: "puddles"))
img.frame = view.bounds;
view.addSubview(img);
var effect = UIBlurEffect(style: UIBlurEffectStyle.Light)
var effectView = UIVisualEffectView(effect: effect)
effectView.frame = CGRectMake(0, 0, 500, 500)
view.addSubview(effectView)
The image as rendered using the code above in the iPad Air, iPhone 5, or iPhone 5S simulators:

The image as rendered using the code above in the iPhone 4S, iPad 2, or iPad Retina simulators:

Note: Both images above were taken from the simulator, but this can be reproduced on actual devices running iOS 8 Beta 1 as well.
Obviously, I would like to achieve the first effect on all devices. How can I achieve the same first effect on all devices?
UIVisualEffectView in iOS 8 does pretty much the same thing as the (formerly private API) translucency and vibrancy effects seen in iOS 7. Like the iOS 7 effects, they fall back to graphically simpler implementations on hardware that can't render such complex graphics effects in realtime.
We hit this issue recently when our Visual Effect View was an ugly grey color on one of our developer's machines.
UIVisualEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
UIVisualEffectView *visualEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
It turns out that they had enabled Low Quality Graphics Override on their iOS Simulator. Turning this option back to Device Default fixes the issue and displays a nice translucent view.
iOS Simulator > Menu Bar > Debug > Graphics Quality Override > Device Default

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With