0

我有一个 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:animated 中无效。

4

1 回答 1

1

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

于 2013-04-11T15:47:25.790 回答