我正在学习iOS编程,我有一个(希望)简单的问题: 我写了一个绘图程序,可以使用自定义的UIView类。在viewDidLoad方法
中的主视图控制器启动时初始化Image_DrawDraw *drawing = [[Image_DrawDraw alloc] initWithFrame:self.view.bounds];
[self.view addSubview:drawing];
我现在想把我的程序改成更复杂一点。我制作了一个包含一些按钮,状态栏和图像视图的xib文件。我仍然希望能够在图像视图中精确绘制这个新视图,而不是在状态栏或按钮上绘制。但我在初始化我的Image_DrawDraw类时遇到问题,它只是覆盖了整个xib,我回到了我可以绘制的黑屏。 谢谢你的帮助!
答案 0 :(得分:0)
将子视图添加到视图层次结构时,它将成为superview的views
数组属性中的最后一项。视图的分层顺序基于views
数组,最下面的视图是[views objectAtIndex:0]
的项目,最上面的视图是[views lastObject]
的项目。通过在Xib上安排所有其他视图,然后在Xib加载后在代码中添加Image_DrawDraw视图,您将其作为最上面的视图,从而遮挡按钮。
您可以将其直接放在Xib中,而不是将其添加到代码中。
向xib添加自定义视图。将其放置在现有xib图像视图上方和按钮下方。将视图的自定义类设置为Image_DrawDraw。
现在您不需要以下任何一行代码:
Image_DrawDraw *drawing = [[Image_DrawDraw alloc] initWithFrame:self.view.bounds];
[self.view addSubview:drawing];
要在代码中引用Image_DrawDraw xib视图,您应该在viewController的@interface
中为它创建一个IBOutlet属性,并通过CTRL在Xib文件中拖出一行来将Xib视图连接到IBOutlet。