试图添加一个子视图,drawRect 没有被调用
Posted
技术标签:
【中文标题】试图添加一个子视图,drawRect 没有被调用【英文标题】:Trying to add a subview, drawRect isn't called 【发布时间】:2010-11-28 05:06:41 【问题描述】:我正在尝试向我的主视图添加一个子视图。这是我的 viewController 中的相关代码:
- (void)viewDidLoad
[super viewDidLoad];
MyUIViewSubclass* myView = [[MyUIViewSubclass alloc] init];
[self.view addSubview:myView]; // self.view is a simple UIView
[myView setNeedsDisplay];
myView 中的 drawRect 没有被调用。
但是,如果我使用 MyUIViewSubclass 作为 viewController 的主视图(在 Interface Builder 中设置它),drawRect 会被调用。
我需要做什么才能在我的子视图中调用 drawRect?
【问题讨论】:
好的,想通了。没有设置我的 subView 的边界。 其实应该是设置边界,而不是框架。现在按预期工作。 你应该关闭这个问题。 【参考方案1】:在您的子类中,您应该为 UIView 使用指定的初始化程序:
- (id)initWithFrame:(CGRect)frame
self = [super initWithFrame:frame];
if (self)
//Implementation code...
【讨论】:
谢谢。但是如果我想刷新我的子类的内容呢?如果我只绘制一次,我会继续使用 initWithFrame,但我需要一种方法让子视图自己重绘。【参考方案2】:好的,想通了。没有设置我的 subView 的框架。
【讨论】:
这就是我使用指定初始化程序的意思:)以上是关于试图添加一个子视图,drawRect 没有被调用的主要内容,如果未能解决你的问题,请参考以下文章
我没有任何迹象表明适当的方法已被触发(我在 drawRect 中有一个 NSLog)