iPad上的图层阴影丢失(但在模拟器中工作)

时间:2013-03-01 23:27:10

标签: ios objective-c quartz-graphics shadow

我使用以下代码在UIView后面画一个阴影

    self.view.layer.borderColor = [UIColor whiteColor].CGColor;
    self.view.layer.shadowColor = [UIColor blackColor].CGColor;
    self.view.layer.shadowOpacity = 1.0;
    self.view.layer.shadowRadius = 25.0;
    self.view.layer.shadowOffset = CGSizeMake(0, 3);
    self.view.clipsToBounds = NO;

    CGPathRef shadowPath = [UIBezierPath bezierPathWithRect:self.view.layer.bounds].CGPath;
    [self.view.layer setShadowPath:shadowPath];

这可以在模拟器和iPhone5中使用。然而,在我的iPad3上:根本没有阴影。

enter image description here

知道怎么回事?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。这不是关于模拟器。这是关于肖像与景观方向的界限的回归。我必须将阴影路径的设置移动到 viewDidAppear didRotateFromInterfaceOrientation 方法,以便在所有可能的启动方向上正确渲染阴影。

-(void)viewDidAppear:(BOOL)animated{
    CGPathRef shadowPath = [UIBezierPath bezierPathWithRect:self.view.layer.bounds].CGPath;
    [self.view.layer setShadowPath:shadowPath];
}

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
    CGPathRef shadowPath = [UIBezierPath bezierPathWithRect:self.view.layer.bounds].CGPath;
    [self.view.layer setShadowPath:shadowPath];
}