实时混合UIImages

时间:2013-10-26 05:28:59

标签: ios objective-c uiimage ios7 gpuimage

是否可以像iOS 7上的通知中心中的箭头一样进行实时混合? 我想知道UIImage是否可以在柔和的灯光下使用内容(UIView或CALayer),因此背景图像可以移动,混合图像可以保留在一个位置。

我想让它成为你可以拥有UIImage的地方,你可以将blendMode属性设置为你需要的任何混合模式,例如imageView.blendMode = kCGBlendModeSoftLight;

我尝试使用GPUImage,但我无法弄清楚如何做我需要的事情。任何帮助将不胜感激。

到目前为止,我用来设置UIImage的混合模式的代码是这样的;但是,如果移动背景视图,则不会更新UIImage上的混合。

    //blur the background
    GPUImageGaussianBlurFilter *blurFilter = [[GPUImageGaussianBlurFilter alloc] init];
    blurFilter.blurRadiusInPixels = 50.0f;
    blurFilter.blurPasses = 4;
    UIImage *blurredBackground = [blurFilter imageByFilteringImage:[UIImage imageNamed:@"Background.png"]];

    //make the blended images
    UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, 2.0f);
    CGContextSetInterpolationQuality(UIGraphicsGetCurrentContext(), kCGInterpolationHigh);
    [blurredBackground drawInRect:self.view.bounds blendMode:kCGBlendModeNormal alpha:1.0];

    [[UIImage imageNamed:@"BarLineImage.png"] drawInRect:CGRectMake(0, self.view.bounds.size.height - 31, self.view.bounds.size.width, 1) blendMode:kCGBlendModeSoftLight alpha:1.0];

    [[UIImage imageNamed:@"Equalizer-th.png"] drawInRect:CGRectMake(65, self.view.bounds.size.height - 30, 30, 30) blendMode:kCGBlendModeSoftLight alpha:1.0];
    [[UIImage imageNamed:@"Player-th.png"] drawInRect:CGRectMake(145, self.view.bounds.size.height - 30, 30, 30) blendMode:kCGBlendModeSoftLight alpha:1.0];
    [[UIImage imageNamed:@"Container-th.png"] drawInRect:CGRectMake(225, self.view.bounds.size.height - 30, 30, 30) blendMode:kCGBlendModeSoftLight alpha:1.0];

    UIImage *blendedImages = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

以下是此代码对某些视觉辅助工具的屏幕截图。Screenshot

这看起来像我需要的方式,但我无法为底部图像下方的内容制作动画。我真的需要能够为UIImages和UIViews进行实时混合。

1 个答案:

答案 0 :(得分:0)

查看WWDC会话中的视频编号226。您可以找到很多关于如何使用新的iOS 7 api动画,混合图像的信息。

我意识到我的答案并不完整,应该是一个问题的评论,但我的声誉太低了。

编辑: WWDC Session 2013,Video nr 226:在iOS上实现Engaging UI