Полагаю, мы говорим о UIViews, а не Layers здесь?!
В этом случае usernameLabel добавляется только один раз, даже если вы вызываете addSubview несколько раз.
Чтобы избежать двусмысленности, здесь приведен код:
let baseView = UIView()
let dateLabel = UILabel()
let usernameLabel = UILabel()
override func viewDidLoad() {
super.viewDidLoad()
baseView.tag = 1
usernameLabel.tag = 2
dateLabel.tag = 3
self.view.addSubview(self.baseView)
self.baseView.addSubview(self.usernameLabel)
self.baseView.addSubview(self.dateLabel)
self.baseView.addSubview(self.usernameLabel)
self.traverseViewHierarchy(view: self.baseView, level: 0)
}
private func traverseViewHierarchy(view: UIView, level: Int) {
for _ in 0...level {
print (" | ", terminator: "")
}
print ("view: \(view.tag)")
for view in view.subviews {
self.traverseViewHierarchy(view: view, level: level + 1)
}
}
Это добавляет некоторые теги к видам упоминаний и выдает их в консоли:
| view: 1
| | view: 3
| | view: 2
Как видите, usernameLabel просто добавляется один раз в иерархию представлений.