【发布时间】:2015-05-15 12:15:49
【问题描述】:
我很困惑,为什么下面的代码我加到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 创建,然后通过约束更改大小。
规范:通过工作,我的意思是按钮将是圆形的(如果纵横比为 1:1,则为圆形)并带有阴影。不工作,我的意思是它仍然是一个正方形。
【问题讨论】:
-
为什么要从
drawRect调用它?您覆盖该方法以绘制而不是思考。 -
For programatically created buttons, where should I add this method to? The button might be created with just init and size changed later via constraints.- 这就是原因。而且,因为我不知道还能在哪里称呼它:) -
drawRect:在init...和awakeFromNib之后调用,直到您的窗口或视图的图层已经创建。您再次需要更新它们。 -
好的,但这仍然不能回答我应该将它放在哪里用于使用 init + 约束创建的按钮的问题。
-
@LordZsolt:我相信我的最后一句话给出了提示,不是吗。每当你画新东西时,你需要
[setNeedDisplay:YES]...
标签: ios objective-c uibutton calayer