Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios CAGradientLayer显示完全半透明_Ios_Objective C_Cocoa Touch_Calayer - Fatal编程技术网

Ios CAGradientLayer显示完全半透明

Ios CAGradientLayer显示完全半透明,ios,objective-c,cocoa-touch,calayer,Ios,Objective C,Cocoa Touch,Calayer,我试图创建两个渐变层,一个在滚动视图的每一侧,以显示有滚动到的内容 左边的那个很好用,但右边的那个完全透明。我错过了什么 CAGradientLayer *l = [CAGradientLayer layer]; l.frame = self.leftBlur.frame; l.colors = [NSArray arrayWithObjects:(id)[UIColor whiteColor].CGColor, (id)[UIColor clearColor].CGColor, nil]; l

我试图创建两个渐变层,一个在滚动视图的每一侧,以显示有滚动到的内容

左边的那个很好用,但右边的那个完全透明。我错过了什么

CAGradientLayer *l = [CAGradientLayer layer];
l.frame = self.leftBlur.frame;
l.colors = [NSArray arrayWithObjects:(id)[UIColor whiteColor].CGColor, (id)[UIColor clearColor].CGColor, nil];
l.startPoint = CGPointMake(0.0f, 0.5f);
l.endPoint = CGPointMake(1.0f, 0.5f);
self.leftBlur.layer.mask = l;

self.leftBlur.hidden = YES;

CAGradientLayer *r = [CAGradientLayer layer];
r.frame = self.rightBlur.frame;
r.colors = [NSArray arrayWithObjects:(id)[UIColor clearColor].CGColor, (id)[UIColor whiteColor].CGColor, nil];
r.startPoint = CGPointMake(0.0f, 0.5f);
r.endPoint = CGPointMake(1.0f, 0.5f);
self.rightBlur.layer.mask = r;

调试输出:

(lldb) po r
<CAGradientLayer:0x170ba6d0; position = CGPoint (305 62.5); bounds = CGRect (0 0; 30 125); allowsGroupOpacity = YES; endPoint = CGPoint (1 0.5); startPoint = CGPoint (0 0.5); colors = (
    "<CGColor 0x15e590e0> [<CGColorSpace 0x15e34b50> (kCGColorSpaceDeviceGray)] ( 1 1 )",
    "<CGColor 0x17012ed0> [<CGColorSpace 0x15d15310> (kCGColorSpaceDeviceRGB)] ( 1 0 0 1 )"
)>
(lldb) po self.rightBlur
<UIImageView: 0x171377d0; frame = (290 0; 30 125); autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0x17137860>>
(lldb) po l
<CAGradientLayer:0x170b9f00; position = CGPoint (15 62.5); bounds = CGRect (0 0; 30 125); allowsGroupOpacity = YES; endPoint = CGPoint (1 0.5); startPoint = CGPoint (0 0.5); colors = (
    "<CGColor 0x15e590e0> [<CGColorSpace 0x15e34b50> (kCGColorSpaceDeviceGray)] ( 1 1 )",
    "<CGColor 0x15d39320> [<CGColorSpace 0x15e34b50> (kCGColorSpaceDeviceGray)] ( 0 0 )"
)>
(lldb) po self.leftBlur
<UIImageView: 0x17136fc0; frame = (0 0; 30 125); hidden = YES; autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0x17137050>>
(lldb)por
(lldb)po self.rightBlur
(lldb)po l
(lldb)po self.leftBlur

将渐变层的帧设置为等于
右模糊的帧。这将偏移
rightBlur
中的层。应将其设置为其边界:

r.frame = self.rightBlur.bounds;

对于左侧,这是有效的,因为它的原点是(0,0)

您将渐变层的帧设置为等于
rightBlur
的帧。这将偏移
rightBlur
中的层。应将其设置为其边界:

r.frame = self.rightBlur.bounds;

对于左侧,这是有效的,因为其原点是(0,0)

问题很可能是由于颜色来自不同的颜色空间。请注意,当您执行
por
时,颜色不在同一颜色空间中-一个来自RGB,另一个来自灰色

我建议您不要使用
[UIColor clearColor]
,而是使用
[UIColor withwhite:1.0 alpha:0.0]
。与另一种颜色的
[UIColor whiteColor]
一起使用将导致两种颜色位于同一颜色空间中


编辑:实际上问题可能是“diederikh”指出的
框架问题。

问题最有可能是由于颜色来自不同的颜色空间。请注意,当您执行
por
时,颜色不在同一颜色空间中-一个来自RGB,另一个来自灰色

我建议您不要使用
[UIColor clearColor]
,而是使用
[UIColor withwhite:1.0 alpha:0.0]
。与另一种颜色的
[UIColor whiteColor]
一起使用将导致两种颜色位于同一颜色空间中


编辑:事实上,问题可能是“diederikh”指出的
框架问题。

以防万一有人问这个问题,但它仍然不起作用:

记住使用CGColor对象而不是UIColor创建颜色数组

我花了30分钟思考我的梯度为什么不起作用


希望这对某人有所帮助。

以防万一有人遇到这个问题,但它仍然不起作用:

记住使用CGColor对象而不是UIColor创建颜色数组

我花了30分钟思考我的梯度为什么不起作用


希望这对某人有所帮助。

我的图层最初是黑色,而不是清晰的颜色,我不明白为什么。谢谢我的图层最初是黑色,而不是清晰的颜色,我不明白为什么。谢谢