我非常困惑,为什么如果我将以下代码添加到awakeFromNib或initWithFrame:中,但如果将它添加到drawRect:或直接调用它,为什么会工作呢?
self.layer.cornerRadius = CGRectGetWidth(self.bounds) / 2.0f;
self.layer.shadowColor = [UIColor blackColor].CGColor;
self.layer.shadowRadius = 3;
self.layer.shadowOffset = CGSizeMake(0.0f, 0.0f);
self.layer.shadowOpacity = 0.75f;对于以编程方式创建的按钮,应该将此方法添加到何处?该按钮可能只使用init创建,随后通过约束更改大小。
Specification:的工作,我的意思是按钮将四舍五入(圆圈,如果宽比是1:1)与下降阴影。不工作,我的意思是,它将保持一个正方形。
发布于 2015-05-15 12:27:09
查看苹果文档中的详细描述,但本质上是因为您正在设置您的层配置(cornerRadius、阴影等)。在抽签周期的中间,您应该在抽签周期开始之前完成此操作。
来自drawRect:文档:
在调用此方法时,UIKit已经为您的视图配置了适当的绘图环境,您可以简单地调用呈现内容所需的任何绘图方法和函数。
其他函数(如awakeFromNib:或initWithFrame: )发生在抽签周期之前,这意味着在屏幕上呈现配置之前将考虑到它们。相比之下,drawRect:假设这些基本配置已经设置,只用于在屏幕上呈现您指定的内容。
https://stackoverflow.com/questions/30259342
复制相似问题