Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为什么插入子视图时会出现黑屏?_Ios_User Interface_Uiview_Subview - Fatal编程技术网

Ios 为什么插入子视图时会出现黑屏?

Ios 为什么插入子视图时会出现黑屏?,ios,user-interface,uiview,subview,Ios,User Interface,Uiview,Subview,使用下面的代码在我的UIView中插入一个子视图,我会看到一个黑屏。有人能告诉我为什么吗 CJGBoardLabels* whiteLabels = [[CJGBoardLabels alloc] initWithFrame:self.frame andOrientation:@"white" andOrigin:self.boardOrigin andSquareSize:_squareSize andHorizontalOffset:_horizont

使用下面的代码在我的UIView中插入一个子视图,我会看到一个黑屏。有人能告诉我为什么吗

CJGBoardLabels* whiteLabels = [[CJGBoardLabels alloc] initWithFrame:self.frame 
    andOrientation:@"white" 
    andOrigin:self.boardOrigin 
    andSquareSize:_squareSize 
    andHorizontalOffset:_horizontalOffset 
    andVerticalOffset:_verticalOffset];

[self insertSubview:whiteLabels aboveSubview:self];
我也得到了与以下行相同的结果:

[self insertSubview:whiteLabels belowSubview:self];

不要在
drawRect:
方法中添加子视图。相反,使用实际触发方法添加子视图,最好让控制器添加子视图(而不是视图本身)。因此,在控制器
viewdiload
中调用
addSubview:
或一个操作方法。

使用
[self addSubview:whiteLabels]检查假设self是一个视图。在创建白标签和日志
self.frame
之前放置一个断点。什么是赛尔夫?嗯,我想这可能是个错误的称呼
self.frame
CGRect
,因为我正在从父视图的
drawRect
方法调用addSubview/insertSubview。这是一个错误的调用位置吗?您不应该在
drawRect:
中添加子视图,不。另外,
self
不能是
self
的子视图,因此尝试基于该逻辑进行排序是有缺陷的。好吧,如果我想在父视图的drawRect完成后添加子视图,那么在哪里合适的位置添加子视图?