0

我使用以下代码在 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 上:根本没有阴影。

在此处输入图像描述

知道怎么来的吗?

4

1 回答 1

0

我找到了解决方案。这与模拟器无关。这是关于纵向与横向方向的界限的回归。我不得不将阴影路径的设置移动到viewDidAppeardidRotateFromInterfaceOrientation方法中,以便在所有可能的启动方向上正确渲染阴影。

-(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];
}
于 2013-03-10T22:17:57.757 回答