以编程方式添加UIView子类而不是绘制自身

时间:2012-02-24 19:11:53

标签: iphone uiview uiviewcontroller

我不明白这是如何运作的。如果我将UIView对象绘制到我的UIViewController .xib文件中,那么我的UIView会自行重绘。如果我将它添加到subView,如

CustomView : UIView

在UIViewController的viewDidLoad

CustomView *v = [[CustomView alloc] initWithFrame:self.view.frame];
[self.view addSubview:v];

CustomView不会绘制自己。然后我试着做

[self.view setNeedsDisplay];

我仍然一无所获。只是一个白色的背景(不同于我以前得到的黑色背景),但没有我的绘画。以编程方式添加UIView时它是如何工作的?感谢。

1 个答案:

答案 0 :(得分:0)

您可能只是错误地设置了CustomView的框架。

每个视图都有自己的坐标空间,左上角有(0,0)。视图frame位于其父级坐标空间中。这意味着将视图frame设置为与其超级视图的frame相同通常是错误的。

视图bounds位于视图自己的坐标空间中。因此,如果您想让CustomView完全涵盖其超级视图,则应将CustomView&#39; frame设置为其超级视图的bounds。< / p>

试试这个:

CustomView *v = [[CustomView alloc] initWithFrame:self.view.bounds];