UIView图层阴影旋转后变暗

问题描述:

我有一个UIView作为标题使用,并且已将阴影应用于此视图。它按照我的意图在屏幕上显示,但在旋转后,阴影会变成两倍黑暗,就好像它已经在本身之上重绘一样。随后的旋转使它更暗。这里是头部和阴影代码:UIView图层阴影旋转后变暗

self.header = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, HEADER_HEIGHT)]; 
self.header.backgroundColor = [UIColor whiteColor]; 
self.header.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleWidth; 

// Drop shadow. 
self.header.layer.shadowColor = [UIColor blackColor].CGColor; 
self.header.layer.shadowOpacity = 0.5; 
self.header.layer.shadowRadius = 2.0; 
self.header.layer.shadowOffset = CGSizeMake(0, 2); 
//  self.header.layer.shouldRasterize = YES; 
//  self.header.layer.rasterizationScale = [UIScreen mainScreen].scale; 

此代码的所有发生在我的视图控制器的viewWillLayoutSubviews,并调用[超级willLayoutSubviews]在方法的开始。我曾尝试在viewWillAppear中放置相同的代码:动画效果不佳。

写这个问题时,我想出了解决方案。 每次调用viewWillLayout子视图时,我都会重新初始化标题。 除了效率低下之外,这也导致了阴影因某种原因而被拖垮。 我通过在loadView中初始化所有视图并在viewWillLayoutSubviews中进行框架设置来解决此问题。这解决了问题,更好,因为我不重新初始化已经存在的对象。