TOP
|
iOS 7中实现模糊效果(六)
编译并运行程序,打开录制操作,看看情况如何:
好消息是看起来基本正常!坏消息是整个屏幕被缩放到录制按钮中去了。这个问题跟之前遇到的类似。我们需要给BlurView 这是适当的contentRect 。
打开BlurView.m ,用下面的代码替换掉initWithFrame: 方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
- (
id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
CGRect deviceSize = [UIScreen mainScreen].bounds;
self.layer.contentsRect = CGRectMake(frame.origin.x/deviceSize.size.height,
frame
.origin.y/deviceSize.size.width,
frame
.size.width/deviceSize.size.height,
frame
.size.height/deviceSize.size.width);
self.fillMode = kGPUImageFillModeStretch;
}
return self;
}
|
contentRect 的每个参数必须在0.0f 和1.0f 之间。在这里只需要利用view的位置除以屏幕的size,得到的值即可。
编译并运行程序,看看效果如何:
恭喜!至此已经完成了静态模糊和实时视频模糊的实现。现在你已经完全可以在程序中添加iOS 7的模糊效果啦!
何去何从?
可以在这里下载到完整的工程。
本文不仅指导你在程序中使用iOS 7的模糊效果,还介绍了如何使用GPUImage 框架,这个框架也是我非常希望你能看到的东西。重要的是,本文指出了为什么要使用模糊,什么时候使用模糊效果是合适的,这在iOS 7的新设计语言中是一个关键的概念。当然也希望在未来的版本中,苹果能够将相关APIs提供给开发者使用,不过在那之前,GPUImage 是一个不错的替代品。
|