在iOS 5.1上看不到CALayer的阴影

时间:2012-10-05 15:07:16

标签: xcode calayer shadow

我有一个UIView,我使用storyboard将其设置为tableView的tableHeaderView。

在viewDidLoad期间,我使用以下代码给这个UIView一个阴影:

_viewHeaderInfo.layer.masksToBounds = NO;
_viewHeaderInfo.layer.shadowOffset = CGSizeMake(0, 2);
_viewHeaderInfo.layer.shadowOpacity = 0.5;

当我在iPhone 6.0模拟器中运行时,阴影显示。 当我在iPhone 5.1模拟器中运行时,阴影会显示。

这不是展示阴影的方式吗?我应该采用不同的方式吗? 提前谢谢!

其他信息:

我有一些代码可以在某些用户操作中使用动画隐藏/显示视图。在显示视图时(首先隐藏它之后),我注意到阴影在动画运行的同时显示。在动画结束时,阴影再次消失。 这是用于显示视图的动画代码:

// Get references //
CGFloat h = _viewHeaderInfo.bounds.size.height;
UITableView *tv = self.tableView;


// Move the frame of the View UP by changing the .y value //
_viewHeaderInfo.frame = CGRectMake(0, -h, tv.frame.size.width, h);

// Start animation: adding the View to .tableHeaderView resets the View.frame.y to 0 //
[UIView animateWithDuration:0.3 animations:^{

    [tv scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:NO];
    tv.tableHeaderView = _viewHeaderInfo;

}];

1 个答案:

答案 0 :(得分:1)

UITableView垂直排列单元格和标题以形成表格。它只是将它们作为子视图添加到自身。它们的添加顺序没有记录(并且可能在OS版本之间发生变化)。

图层的阴影直接显示在图层下方,在上一个兄弟图层上方,但在下面的兄弟图片下方。如果表格首先添加标题,然后是下面的(不透明)单元格,则单元格将覆盖阴影。如果它们以相反的顺序添加,则阴影将可见。

顺序通常取决于滚动方向,只需先查看哪个视图。但同样,这没有记录,可能会发生变化。

不要依赖于表格视图中的视图顺序。