在我的视图控制器中说我有一个自定义UIView
,它在视图控制器的视图中保存了某个区域。我们称之为viewA
。我有一个名为UIView
的自定义viewB
,它位于viewA
的范围内。我曾经认为viewB
必须是viewA
的子视图,因为它位于其范围内。但是今天我和我的一位同事发生争执,他说viewB
不一定应该是viewA
的子视图,而是视图控制器视图的子视图。你怎么看?这个问题有一个共同的规则吗?
答案 0 :(得分:3)
我认为viewB必须是viewA的子视图,因为它位于其范围内。
视图层次结构由UIView的数组属性subViews组织。每个子视图都有自己的帧信息,以相对于父级边界进行布局。重叠是正常的
答案 1 :(得分:2)
在我看来,这取决于viewA和viewB的用法。如果你总是希望将viewB相对于viewA的边界定位,或者如果你总是希望将viewA和viewB一起使用,那么将viewB作为子视图添加可能会更简单。如果你想单独定位和使用这两个观点,或者这两个观点的位置本身并不相关,我会说它们应该是不同的观点。
简而言之,仅仅因为视图重叠并不意味着它们属于一个/一个应该是另一个的超级视图。
答案 2 :(得分:1)
UITableViewCell
UITableView
的子视图,不是因为它们具有UITableView
的边界,而是具有内部连接。
在您的情况下,您需要考虑viewA
和viewB
是否存在某种真实的关系,或者恰好是在一起。也许viewA
可以访问和修改viewB
很多?或viewB
是viewA
的一个组成部分?您需要将viewB
设置为viewA
的子视图。