UITextField中的渐变文本

时间:2013-08-31 18:28:21

标签: ios uitextfield cagradientlayer

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

enter image description here

而不是背景我希望在文本上有渐变。如何在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]; 

2 个答案:

答案 0 :(得分:1)

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

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

gradient.mask = myTextField.layer;

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

Dislaimer:我没有时间测试代码。我把它留给你。但是可以使用将一层与另一层屏蔽的一般想法,所以我相信你可以自己理清细节。

答案 1 :(得分:0)

我在代码中修改了somme

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;

现在看不见文字了 enter image description here