5

是否可以像 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();

这是此代码为一些视觉辅助所做的屏幕截图。截屏

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

4

1 回答 1

0

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

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

编辑:WWDC Session 2013, Video nr 226: Implementing Engaging UI on iOS

于 2013-10-30T14:06:21.600 回答