1

我正在使用 CAGradientLayer 为文本字段制作渐变背景。看起来像这样

在此处输入图像描述

我想在文本上使用渐变而不是背景。如何在 UITextField 中制作渐变文本?

我用来在图像中制作渐变的代码

pinkDarkOp = [UIColor colorWithRed:0.9f green:0.53f blue:0.69f alpha:1.0];
pinkLightOp = [UIColor colorWithRed:0.79f green:0.45f blue:0.57f alpha:1.0];

CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = [[myTextField layer] bounds];
gradient.cornerRadius = 7;
gradient.colors = [NSArray arrayWithObjects:
                      (id)pinkDarkOp.CGColor,
                      (id)pinkLightOp.CGColor,
                      nil];
[[myTextField layer]addSublayer:gradient]; 
4

2 回答 2

1

您可以通过创建两个图层来解决此问题:首先创建一个填充渐变的图层。然后创建另一个包含文本的图层。最后,您使用第二层作为遮盖第一层的遮罩。这是通过将第二层分配给第一层的掩码属性来实现的。

如果我更具体地查看您的代码示例,我认为最后一行之前的所有内容都应该没问题。但是你应该用这样的东西替换最后一行:

gradient.mask = myTextField.layer;

也许您还需要做一些调整myTextField(很难说,因为它的定义不是列出的代码的一部分)。重要的是要了解蒙版中的文本必须是不透明的,但该图层的其余部分必须是完全透明的。阅读 CALayer 类参考中的“掩码”属性: https ://developer.apple.com/library/ios/DOCUMENTATION/GraphicsImaging/Reference/CALayer_class/Introduction/Introduction.html#//apple_ref/occ/instp/CALayer /面具

免责声明:我没有时间测试代码。我把它留给你。但是用一层遮罩的大体思路应该是可以用的,所以我相信大家可以自己梳理细节。

于 2013-09-01T12:14:44.957 回答
0

我对我的代码进行了一些更改

pinkDarkOp = [UIColor colorWithRed:0.9f green:0.53f blue:0.69f alpha:1.0];
           pinkLightOp = [UIColor colorWithRed:0.79f green:0.45f blue:0.57f alpha:1.0];
        gradient.frame = [[myTextField layer] bounds];
        gradient.cornerRadius = 7;
       gradient.colors = [NSArray arrayWithObjects:(id)pinkDarkOp.CGColor,
                                             (id)[[UIColor clearColor] CGColor], nil]; 
           gradient.mask=myTextField.layer;

文字现在不可见 在此处输入图像描述

于 2013-09-01T14:57:58.557 回答