Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.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 没有渐变的视图中的阴影?_Ios_Objective C_Cocoa Touch_Uiview_Subviews - Fatal编程技术网

Ios 没有渐变的视图中的阴影?

Ios 没有渐变的视图中的阴影?,ios,objective-c,cocoa-touch,uiview,subviews,Ios,Objective C,Cocoa Touch,Uiview,Subviews,有人知道如何在没有渐变的情况下实现阴影效果吗?就像下面的截图 另一个问题是子视图的顺序,即前面的视图可能会隐藏后面视图的效果。如何克服此问题?对于第一个问题,您可以更改阴影的阴影半径,例如: //You must include QuartzCore framework (#import <QuartzCore/QuartzCore.h>) view.layer.cornerRadius = 5; view.layer.shadowRadius = 0; //The shadow s

有人知道如何在没有渐变的情况下实现阴影效果吗?就像下面的截图


另一个问题是子视图的顺序,即前面的视图可能会隐藏后面视图的效果。如何克服此问题?

对于第一个问题,您可以更改阴影的阴影半径,例如:

//You must include QuartzCore framework (#import <QuartzCore/QuartzCore.h>)
view.layer.cornerRadius = 5;
view.layer.shadowRadius = 0; //The shadow should be rendered as a solid shape
view.layer.shadowOffset = CGSizeMake(0, 2);
view.layer.shadowOpacity = 0.5;
view.layer.shadowColor = [UIColor blackColor].CGColor;

UIBezierPath *path = [UIBezierPath bezierPathWithRect:view.bounds];
view.layer.shadowPath = path.CGPath; //This is very important!
//必须包含QuartzCore框架(#导入)
view.layer.cornerRadius=5;
view.layer.shadowRadius=0//阴影应渲染为实体形状
view.layer.shadowOffset=CGSizeMake(0,2);
view.layer.shadowOpacity=0.5;
view.layer.shadowColor=[UIColor blackColor].CGColor;
UIBezierPath*path=[UIBezierPath bezierPathWithRect:view.bounds];
view.layer.shadowPath=path.CGPath//这是非常重要的!
请记住始终设置阴影路径!如果不这样做,渲染阴影的性能将大大降低


对于第二个问题,很抱歉,但我认为没有办法让对象的阴影出现在原始视图上方的另一个视图上

它就像一个符咒。谢谢解决了第一个问题。顺便问一下,为什么阴影路径如此重要?老实说,我不太确定,我认为这很重要,因为如果不设置阴影路径,每次在该视图中调用drawRect(例如在设置某个对象的动画时),都需要重新计算阴影路径,但如果设置阴影路径,它将始终使用该阴影路径。