【问题标题】:Trying to add a subview, drawRect isn't called试图添加一个子视图,drawRect 没有被调用
【发布时间】: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 的边界。
  • 其实应该是设置边界,而不是框架。现在按预期工作。
  • 你应该关闭这个问题。

标签: iphone objective-c ios uiview drawrect


【解决方案1】:

在您的子类中,您应该为 UIView 使用指定的初始化程序:

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) 
    {
       //Implementation code...
    }
}

【讨论】:

  • 谢谢。但是如果我想刷新我的子类的内容呢?如果我只绘制一次,我会继续使用 initWithFrame,但我需要一种方法让子视图自己重绘。
【解决方案2】:

好的,想通了。没有设置我的 subView 的框架。

【讨论】:

  • 这就是我使用指定初始化程序的意思:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-05
  • 1970-01-01
  • 2017-07-03
  • 2011-06-28
  • 2012-04-27
  • 1970-01-01
相关资源
最近更新 更多