旋转后UIView图层阴影变暗

时间:2013-04-11 15:47:26

标签: iphone ios objective-c ipad uiviewcontroller

我有一个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;

此代码全部出现在我的View Controller的viewWillLayoutSubviews中,并在方法开头调用[super willLayoutSubviews]。我已经尝试在viewWillAppear中添加相同的代码:动画效果无效。

1 个答案:

答案 0 :(得分:1)

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