Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.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 阴影未完全扩展UIView的宽度_Ios_Objective C_Uiview - Fatal编程技术网

Ios 阴影未完全扩展UIView的宽度

Ios 阴影未完全扩展UIView的宽度,ios,objective-c,uiview,Ios,Objective C,Uiview,我在UIView上应用了一个背景阴影,使其看起来像是“在”背景之上(这是一个地图视图),但是阴影并没有完全延伸到更宽的iPhone 6和6+屏幕上,即使我应用它的UIView确实如此 在viewDidLoad中,我使用以下代码将阴影应用于UIView: CALayer *layer = self.view_detailview.layer; layer.shadowOffset = CGSizeMake(1, 1); layer.shadowColor = [[UIColor blackColo

我在UIView上应用了一个背景阴影,使其看起来像是“在”背景之上(这是一个地图视图),但是阴影并没有完全延伸到更宽的iPhone 6和6+屏幕上,即使我应用它的UIView确实如此

viewDidLoad
中,我使用以下代码将阴影应用于UIView:

CALayer *layer = self.view_detailview.layer;
layer.shadowOffset = CGSizeMake(1, 1);
layer.shadowColor = [[UIColor blackColor] CGColor];
layer.shadowRadius = 4.0f;
layer.shadowOpacity = 0.80f;
layer.shadowPath = [[UIBezierPath bezierPathWithRect:layer.bounds] CGPath];
在我的故事板中,我设置了一个约束,强制UIView的宽度与SuperView的宽度相匹配,而SuperView的宽度没有任何问题或警告。但当我在6或6+上运行我的应用程序时,我发现阴影并没有像这样完全扩展:


我可以通过将UIView的背景色设置为明显的颜色并看到它填充屏幕来验证UIView是否使用了全宽。

问题在于,当视图尚未正确布局时,您正在使用边界值

viewDidLayoutSubviews
(如果使用视图控制器)或
layoutSubviews
(如果使用独立视图)中设置阴影。在第二种情况下,不要忘记调用
[super layoutSubviews]


或者根本不更改
阴影路径。没有那条线不行吗?

是的!这就成功了。我将它从
viewdiload
移动到
viewdilayoutsubviews
,效果非常好。它确实可以在没有阴影路径的情况下工作,但是如果没有阴影路径,它的性能似乎会受到影响。