UIView 图层阴影在旋转后变暗
Posted
技术标签:
【中文标题】UIView 图层阴影在旋转后变暗【英文标题】:UIView layer shadow darkens after rotation 【发布时间】:2013-04-11 15:47:25 【问题描述】:我有一个 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 中无效。
【问题讨论】:
【参考方案1】:在写出这个问题时,我想出了解决方案。 每次调用 viewWillLayout 子视图时,我都在重新初始化标题。 除了效率低下之外,这也导致阴影由于某种原因而被自身覆盖。 我通过在 loadView 中初始化所有视图并在 viewWillLayoutSubviews 中进行框架设置来解决此问题。这解决了问题,并且更好,因为我没有重新初始化已经存在的对象。
【讨论】:
以上是关于UIView 图层阴影在旋转后变暗的主要内容,如果未能解决你的问题,请参考以下文章