问题描述
我想在UIImageView中应用磨砂玻璃效果。
我试图实现我发现的
UPDATE 1 strong>
所以经过一点研究,我最终发现iOS的Core Image还是不完整的,当比较OS X版本的库。所以我google了很多,我找到两个解决方案,其中一个更简单,另一个更广泛和复杂的库。
-
简单和简单的解决方案:
//stackoverflow.com/users/19679/brad-larson\"> Brady Larson 。它比Core Image快得多,效率高。简介:。 GitHub:
所以,例如,在几行我可以得到我想要的结果(其中originalImage是UIImage应用效果):
GPUImageGaussianBlurFilter * blurFilter = [[GPUImageGaussianBlurFilter alloc] init];
blurFilter.blurSize = 2;
UIImage * blurImage = [blurFilter imageByFilteringImage:resizedImage];
UPDATE 2
苹果宣布iOS 7之后,一些开发人员发现了一个解决方法来做与苹果在默认iOS应用程序中一样的做法,因为苹果没有提供API。 。为什么我认为这是最好的?因为即使它背后的一些视图移动,模糊仍然适用于更新的效果,因为我们预期它应该工作。但是,请记住,这取决于iOS 7 SDK为了工作,它如果Apple更改UIToolbar,可能会有风险。
UPDATE 3
UIImage + ImageEffects (我已将其标记为,但它可在)。使用此类别,您可以使用几种方法(亮,暗,具有特定颜色等)在静态UIImage中应用模糊。此外,昨天,发现它很有趣,因为你可以应用效果(基于
更新4 ,在iOS 8上,苹果发布了新的类,可以轻松地做现场模糊。使用 UIVisualEffect
和 UIVisualEffectView
,您可以快速添加实时模糊到您的应用程序。 :
I am trying to apply a frosted glass effect in a UIImageView.
I tried to implement what i've found in this question, but the result wasn't acceptable.I wanted something like this:
Any ideas?
UPDATE:
Also, we can see that iOS 7 uses this kind of effect in a lot of places. How can we reproduce it?
A good tutorial about CoreImage is here, showing how to apply filters and more:
http://www.raywenderlich.com/5689/beginning-core-image-in-ios-5
UPDATE 1
So after a little bit of research, I ended up discovering that the Core Image for the iOS is still incomplete, when comparing to the OS X version of the library. So I googled a lot, and I find two solutions, one of them more simple, and the other much wider and complex library.
The simple and short solution: https://github.com/esilverberg/ios-image-filters
The amazing and this edit worth, library for processing images and videos with OpenGL, GPUImage by Brad Larson. It is much faster and efficient than Core Image. Introduction: http://www.sunsetlakesoftware.com/2012/02/12/introducing-gpuimage-framework. GitHub: GPUImage
So, for example, in a few lines I can get the result I want (where originalImage is the UIImage to apply the effect):
GPUImageGaussianBlurFilter *blurFilter = [[GPUImageGaussianBlurFilter alloc] init];
blurFilter.blurSize = 2;
UIImage *blurImage = [blurFilter imageByFilteringImage:resizedImage];
UPDATE 2
After Apple announced iOS 7, some developers found a workaround to do the same that Apple did in the default iOS apps, as Apple didn't provide an API for that. The simplest and better solution, in my opinion, is this one. Why I think it's the best? Because even if some view behind it moves, the blur still works great with the updated effect, as we expect it should work. However, bear in mind that it depends on the iOS 7 SDK in order to work, and it can be risky if Apple changes UIToolbar.
UPDATE 3
Apple mentioned, at WWDC 2013 (Session 226 - Implementing Engaging UI on iOS) they would provide a category class on UIImage, called UIImage+ImageEffects (I googled it, and found here, but it's available in Developer Portal - search for UIImageEffects in the search box). With this category, you can apply the blur in a static UIImage, using several methods (light, dark, with a specific color, etc.). Also, yesterday I saw this component and found it pretty interesting, as you can apply the effect (based on the above mentioned category) in a frame.
UPDATE 4
Finally, on iOS 8, Apple released new classes that can do live blur easily. With UIVisualEffect
and UIVisualEffectView
, you can quickly add live blur to your apps. Here is a good tutorial from Ryan Nystrom on how to use those classes (and in blur in general):
这篇关于iPhone SDK - 磨砂玻璃(iOS 7模糊)效果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!