Ios 为什么插入子视图时会出现黑屏?
使用下面的代码在我的UIView中插入一个子视图,我会看到一个黑屏。有人能告诉我为什么吗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
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完成后添加子视图,那么在哪里合适的位置添加子视图?