8

我在这里为一大堆问题道歉。我开始越来越多地使用 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 按钮看起来比实际更“凹”?

有没有办法做径向渐变?有没有办法像 Adob​​e Illustrator 一样创建多光线镜头光晕效果?有没有办法使用“变亮、溶解”或其他 Photoshop 效果来混合图层?有没有办法动态调整图像的亮度?我知道如何进行色相偏移。

我将不胜感激有关我可以将哪种图层效果应用于 CALayers 的任何其他提示

4

3 回答 3

12

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

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

包括以下一些示例:

  • 颜色填充

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

  • 简单路径

  • 贝塞尔曲线

  • 削波(标准和奇偶)

  • 创建自定义绘制的按钮

  • 简单的翻译

  • 带有命中测试触发器的翻译

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

..还有更多;-)

希望你能找到你需要的东西,但据我所知,它应该涵盖了你所要求的相当多的东西。

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

于 2012-04-30T14:05:44.223 回答
2

这是一个非常好的教程,它帮助了我很多,也许它也会帮助你。

于 2012-04-30T13:14:41.127 回答
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]];
    }

}
于 2012-05-01T15:02:42.070 回答