Ios 制作主视图的视图子视图,而不是它在视觉上所处的视图,这是一种好的做法吗?

Ios 制作主视图的视图子视图,而不是它在视觉上所处的视图,这是一种好的做法吗?,ios,cocoa-touch,uiview,uikit,Ios,Cocoa Touch,Uiview,Uikit,假设在我的视图控制器中,我有一个自定义的UIView,它保存视图控制器视图中的特定区域。让我们将此视图称为viewA。我有一个名为viewB的自定义UIView,它位于viewA的范围内。我曾经认为viewB必须是viewA的子视图,因为它在它的范围内。但今天我和一位同事发生了一场争论,他说viewB不一定是viewA的子视图,而是视图控制器视图的子视图。你怎么认为?关于这个问题有共同的规则吗 我认为不存在viewB必须是viewA的子视图的情况,因为它位于其范围内 视图层次结构由UIView的

假设在我的视图控制器中,我有一个自定义的
UIView
,它保存视图控制器视图中的特定区域。让我们将此视图称为
viewA
。我有一个名为
viewB
的自定义
UIView
,它位于
viewA
的范围内。我曾经认为
viewB
必须是
viewA
的子视图,因为它在它的范围内。但今天我和一位同事发生了一场争论,他说
viewB
不一定是
viewA
的子视图,而是视图控制器视图的子视图。你怎么认为?关于这个问题有共同的规则吗

我认为不存在viewB必须是viewA的子视图的情况,因为它位于其范围内


视图层次结构由UIView的数组属性子视图组织。每个子视图都有自己的框架信息,可以相对于父视图的边界进行布局。重叠是正常的

我认为不存在viewB必须是viewA的子视图的情况,因为它位于其边界内


视图层次结构由UIView的数组属性子视图组织。每个子视图都有自己的框架信息,可以相对于父视图的边界进行布局。重叠是正常的

在我看来,这取决于viewA和viewB的使用。如果始终希望将viewB相对放置在viewA的边界内,或者始终希望将viewA和viewB一起使用,则将viewB添加为子视图可能会更简单。如果您想单独定位和使用这两个视图,或者如果这两个视图的位置本身不相关,我会说它们应该是单独的视图


简言之,仅仅因为视图重叠并不意味着它们属于一起/一个视图应该是另一个视图的superview。

在我看来,这取决于viewA和viewB的使用情况。如果始终希望将viewB相对放置在viewA的边界内,或者始终希望将viewA和viewB一起使用,则将viewB添加为子视图可能会更简单。如果您想单独定位和使用这两个视图,或者如果这两个视图的位置本身不相关,我会说它们应该是单独的视图


简言之,仅仅因为视图重叠并不意味着它们属于一起/一个应该是另一个的superview。

UITableViewCell
UITableView的子视图,不是因为它们与
UITableView
的边界在一起,而是因为它们有内部连接


在您的案例中,您需要考虑
viewA
viewB
是否有一些真正的关系,或者只是碰巧在一起。也许
viewA
访问和修改
viewB
很多?或者
viewB
viewA
的一个组件?此时,您需要将
viewB
设置为
viewA
的子视图。

UITableViewCell
UITableView的子视图,这不是因为它们与
UITableView
的边界有关,而是因为它们具有内部连接

在您的案例中,您需要考虑
viewA
viewB
是否有一些真正的关系,或者只是碰巧在一起。也许
viewA
访问和修改
viewB
很多?或者
viewB
viewA
的一个组件?这时需要将
viewB
设置为
viewA
的子视图