我正在使用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];
答案 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;
现在看不见文字了