阴影没有完全延伸UIView的宽度

时间:2014-09-28 21:58:43

标签: ios objective-c uiview

我在UIView上应用了一个背景阴影,使它看起来像是在“背景之上”(这是一个MapView),但阴影并没有完全扩展到更宽的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宽度匹配超级视图宽度,它可以正常工作而没有任何问题或警告。但是当我在6或6+上运行我的应用程序时,我发现阴影并没有如此完全延伸:

Screenshot of how shadow doesn't extend

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

1 个答案:

答案 0 :(得分:9)

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

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

或根本不改变shadowPath。如果没有这条线,它有用吗?