在使用漂亮的框架QuartzCore创建阴影时,我遇到了一个非常奇怪的问题。
当我在viewDidLoad中放入以下代码并在iPhone模拟器上运行它时效果很好,但是当我尝试在iPad模拟器中运行它时阴影就不存在了。
self.viewAboutContainer.layer.shadowColor = [[UIColor blackColor] CGColor];
self.viewAboutContainer.layer.shadowOpacity = 0.7;
self.viewAboutContainer.layer.shadowRadius = 4.0;
self.viewAboutContainer.layer.shadowOffset = CGSizeMake(5.0f, 5.0f);
self.viewAboutContainer.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.viewAboutContainer.bounds].CGPath;
这是一个奇怪的部分,当我将代码从viewDidLoad移动到viewWillAppear时,一切都可以在iPad模拟器上完美运行。
有人可以向我解释原因吗?
答案 0 :(得分:2)
非常有趣。
关于模拟器的事情是它们不是真正的设备模拟器。真正的设备模拟器运行实际在设备上运行的代码和库。模拟器运行的代码和库设计为在您的情况下运行Mac计算机,但仅模拟实际iOS设备上的行为。代码在模拟器中的行为方式取决于模拟器软件开发人员能够获得的实际设备的真实程度。
如果可以的话,我建议您在实际的iPhone和iPad设备上测试您的代码。在实际设备上进行测试将会发现很多。
您也可以尝试通过在包含阴影图像的UIView中嵌入UIView来获得阴影效果。每当我在我的应用程序中编写任何代码时,我总是从最高级别提供的API开始,沿着Apple提供的API堆栈工作。我相信这是Apple推荐使用API的方式。
希望这有帮助。祝你好运。