iOS: 神奇的addSubView
看着addSubView, 本以为是添加多个对象, 但通过测试代码, 发现同一个对象在addSubView中只会添加一次. 想想, 视图对象是通过引用得到的. 在视图的子视图集中, 只保存一个相应的对象, 才不会造成系统的混乱.
override func viewDidLoad() { super.viewDidLoad() var view2 = UIView(frame: CGRectZero) //重复添加多次 for i in 1...50{ view.addSubview(view2) } //结果, 只添加了一次 //view.subviews中只有三项, 前两项是_UILayoutGuide println(view.subviews.count) for i in view.subviews{ println(i) } }
查看addSubView的帮助, 找到了原因:
Views can have only one superview. If view
already has a superview and that view is not the receiver, this method removes the previous superview before making the receiver its new superview.
视图有且只有一个父视图. 如果视图已经有一个父视图并且这个父视图不是将要添加的视图, 本方法会把视图原有的父视图移除, 将新视图设置为父视图.