Nat*_* R. 33 cocoa-touch uikit ios ios7
我试图在UIImageView中应用磨砂玻璃效果.
我试图实现我在这个问题中找到的东西,但结果是不可接受的.我想要这样的东西:

另外,我们可以看到iOS 7在很多地方都使用了这种效果.我们怎样才能重现它?
Nat*_* R. 51
关于CoreImage的一个很好的教程就在这里,展示了如何应用过滤器等等:
http://www.raywenderlich.com/5689/beginning-core-image-in-ios-5
更新1
因此,经过一些研究后,我发现iOS的核心映像与OS X版本的库相比仍然不完整.所以我搜索了很多,我找到了两个解决方案,其中一个更简单,另一个更宽更复杂的库.
简单而简短的解决方案:https://github.com/esilverberg/ios-image-filters
令人惊叹的这个编辑值得用于处理带有OpenGL的图像和视频的库,Brad Larson的 GPUImage .它比Core Image快得多,效率更高.简介:http://www.sunsetlakesoftware.com/2012/02/12/introducing-gpuimage-framework.GitHub:GPUImage
所以,例如,在几行中我可以得到我想要的结果(其中originalImage是应用效果的UIImage):
GPUImageGaussianBlurFilter *blurFilter = [[GPUImageGaussianBlurFilter alloc] init];
blurFilter.blurSize = 2;
UIImage *blurImage = [blurFilter imageByFilteringImage:resizedImage];
Run Code Online (Sandbox Code Playgroud)
更新2
在Apple发布iOS 7之后,一些开发人员发现了一种解决方法,就像Apple在默认iOS应用程序中所做的那样,因为Apple没有为此提供API.在我看来,最简单和更好的解决方案就是这个.为什么我认为这是最好的?因为即使它后面的一些视图移动,模糊仍然可以与更新的效果一起使用,因为我们期望它应该工作.但是,请记住,它取决于iOS 7 SDK才能工作,如果Apple更改UIToolbar,则存在风险.
更新3
Apple提到,在WWDC 2013(Session 226 - 在iOS上实现Engaging UI),他们将在UIImage上提供一个类别类,称为UIImage + ImageEffects(我在谷歌搜索,在这里找到,但它可以在Developer Portal中找到 - 在中搜索UIImageEffects搜索框).使用此类别,您可以使用多种方法(浅色,深色,特定颜色等)在静态UIImage中应用模糊.此外,昨天我看到了这个组件并发现它非常有趣,因为你可以在一个框架中应用效果(基于上面提到的类别).
更新4
最后,在iOS 8上,Apple发布了可以轻松实现实时模糊的新类.使用UIVisualEffect和UIVisualEffectView,您可以快速为您的应用添加实时模糊.以下是Ryan Nystrom关于如何使用这些类(以及一般模糊)的一个很好的教程:
KPM*_*KPM 21
适用于iOS 7和8的解决方案,完全不使用CoreImage或CoreGraphics:
- (void)addBlurToView:(UIView *)view {
UIView *blurView = nil;
if([UIBlurEffect class]) { // iOS 8
UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleExtraLight];
blurView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
blurView.frame = view.frame;
} else { // workaround for iOS 7
blurView = [[UIToolbar alloc] initWithFrame:view.bounds];
}
[blurView setTranslatesAutoresizingMaskIntoConstraints:NO];
[view addSubview:blurView];
[view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[blurView]|" options:0 metrics:0 views:NSDictionaryOfVariableBindings(blurView)]];
[view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[blurView]|" options:0 metrics:0 views:NSDictionaryOfVariableBindings(blurView)]];
}
Run Code Online (Sandbox Code Playgroud)
(假设您的目标版本不是iOS 7以前的版本;如果是,则必须在else块中测试iOS版本)
此解决方案适用于任何视图,而不仅适用于图像.
| 归档时间: |
|
| 查看次数: |
35084 次 |
| 最近记录: |