【发布时间】:2019-09-23 11:31:15
【问题描述】:
我想知道关于 UIView 的一些事情,并添加子视图...
假设我向 baseLayerView 添加了一个子视图:
self.newBaseLayer.addSubview(self.usernameLabel)
如果我错了,UIView 层次结构/结构会纠正我,如下所示:
新的BaseLayer
- self.usernameLabel
然后在后面的代码中,我添加了另一个子视图:
self.newBaseLayer.addSubview(self.dateLabel)
最后我再次添加用户名标签:
self.newBaseLayer.addSubview(self.usernameLabel)
usernameLabel 是否会像这样重复或替换另一个:
新的BaseLayer
- self.usernameLabel
- self.dateLabel
- self.usernameLabel
或
新的BaseLayer
- self.dateLabel
- self.usernameLabel
【问题讨论】:
-
为什么不自己查看生成的层次结构,看看你得到了什么结果?这比输入这个问题要快。
-
顺便说一句 - 这与图层有什么关系?这似乎只处理
UIView。 -
如果你的代码是完整的 - 是的,你不是在谈论
CALayer层次结构(至少你的代码中没有任何暗示) - 那么 绝对 是usernameLayer(令人困惑的名称选择)没有从层次结构中删除,为什么不会它不存在?或者你说的是哪个视图是front? -
让我解释一下......因为@rmaddy 非常擅长,嗯,几乎所有事情。 (1)每个
UIView都可以有子视图,每个人都有自己的能力有子视图。这就是视图层次结构。 (2) 一个UIView有几个UIKit子类,从图像视图到集合视图,再到导航视图,所以是的,它们继承自UIView。 (3) 每个 singleUIView都有一个CALayer。只需将其编码为myView.layer。 (4) 每个CALayer都可以使用addSublayer方法拥有自己的“层”层次结构。最后发表评论.... -
让我们谈谈
CALayer和它们的子类——它们的运作方式与UIView的运作方式非常相似。你可以有一个层次结构,CAShapeLayer,它可以绑定到UIBezierPath,“CA”表示“核心动画”。由于您清楚地使用addSubview进行编码,因此我认为您不是在谈论层-但希望您可以看到UIView的newBaseLayer命名约定在您的问题方面令人困惑。也许在我的三个 cmets 中的某个地方,我澄清并回答了你的问题。如果没有,请更具体一些,我会尽我所能回答/评论
标签: ios swift uiview subview addsubview