iPhone iOS如何创建像投影等图形效果? iOS内置了哪些效果?

时间:2012-04-30 12:31:13

标签: iphone objective-c ios core-graphics quartz-graphics

我在这里为一大堆问题道歉。 我开始越来越多地使用Quartz Graphics,并发现它具有有趣的效果,但我没有很多样本可以看到它们的运行情况。

 view.layer.shadowPath = [UIBezierPath bezierPathWithRect:view.bounds].CGPath;

有一个影子属性:

view.layer.shadowColor = [UIColor grayColor].CGColor;
view.layer.shadowOffset = CGSizeMake(5, 5);
view.layer.shadowPath = [UIBezierPath bezierPathWithRect:view.bounds].CGPath;
view.layer.shadowRadius = 9;

虽然我无法制作影子秀。

边界:

 view.layer.borderWidth = 1;
   view.layer.borderColor=[[UIColor whiteColor] CGColor];

我可以从iPhone上的内置iOS获得哪些其他效果? * 是否有一个全面的演示项目可以展示iOS中内置的图形处理功能? *

如何进行透明度遮罩?

有没有办法添加内部阴影或内部发光? 有没有办法让iOS按钮看起来比实际上更“凹”?

有没有办法做径向渐变? 有没有办法创建像Adobe Illustrator这样的多光线镜头眩光效果? 有没有办法使用“减轻,溶解”或其他photoshop效果来混合图层? 有没有办法动态调整图像的亮度?我知道如何进行色调转换。

我很欣赏任何其他关于我可以应用于CALayers的图层效果的提示

3 个答案:

答案 0 :(得分:12)

多么有趣的巧合!我最近刚刚在 CoreGraphics和CoreAnimation iOS游戏设计研讨会上做了一个演示,就在今天我已经在Github上发布了一些文档。

因此,如果您更喜欢一些示例,可以在此处查看存储库:https://github.com/pkluz/PKCoreTechniques

包括以下一些示例:

  • 颜色填充

  • 渐变填充(线性和径向)

  • 简单路径

  • Bezier Curves

  • 剪辑(标准和偶数)

  • 创建自定义绘制的按钮

  • 简单翻译

  • 使用命中测试触发器进行翻译

  • CoreAnimation中具有3D转换的非常原始的“CoverFlow”。

..还有一些; - )

希望你找到你需要的东西,但从我看来它应该涵盖了你所要求的大量东西。

注意:还有一个PDF作为交互式教程。

答案 1 :(得分:2)

这是一个非常好的tutorial,它对我帮助很大,也许它对你也有帮助。

答案 2 :(得分:1)

这是我使用CIImage生成径向渐变的实现。如果未创建渐变,则显示命名图像。否则它会显示径向渐变。

+(UIImage*)doRadialGradientFilter:(NSString*)baseImageName 
{

    CIFilter* controlsFilter  = [CIFilter filterWithName: @"CIRadialGradient" keysAndValues:
                   @"inputColor1", [CIColor colorWithRed:0.0 green:0.0
                                                    blue:0.0 alpha:0.0], @"inputColor0", [CIColor colorWithRed:0.0 green:0.0
                                                                                                          blue:0.5 alpha:0.5], @"inputRadius0", [NSNumber numberWithDouble:0.0], nil];


    CIImage *displayImage = controlsFilter.outputImage;
    UIImage *finalImage = [UIImage imageWithCIImage:displayImage];

    CIContext *context = [CIContext contextWithOptions:nil];
    if (displayImage == nil || finalImage == nil) {
        // We did not get output image. Let's display the original image itself.
        return  [UIImage imageNamed:baseImageName];
    }else {
        // We got output image. Display it.
        return  [UIImage imageWithCGImage:[context createCGImage:displayImage fromRect:displayImage.extent]];
    }

}