UIView的相关操作
import UIKit
class MainViewController: UIViewController {
// 创建全局的view
var myView: UIView?
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.red
self.setupView()
}
func setupView() {
// 创建一个view
let view = UIView(frame: CGRect(x: 10, y: 50, width: 100, height: 100))
view.center = CGPoint(x: 100, y: 100)
view.backgroundColor = UIColor.orange
self.view.addSubview(view)
// 移除subView
myView?.removeFromSuperview()
// 添加subView
myView?.addSubview(view)
//MARK: view的层级关系
// 将subView往前移动一个图层(与它的前一个图层对调位置)
self.view.bringSubview(toFront: myView!)
// 将subView往后移动一个图层(与它的后一个图层对调位置)
self.view.sendSubview(toBack: myView!)
// 使用subView的变数名称取得它在UIView中的索引值(index)
let index = self.view.subviews.index(of: myView!)
// 使用索引index交换两个subView之间的层级
let index1: Int = 0
let index2: Int = 1
self.view.exchangeSubview(at: index1, withSubviewAt: index2)
// 给view加上标记
myView?.tag = 1000
// 通过标记tag得到view
let otherView = UIView().viewWithTag(1000)
// 返回一个数组
UIView().subviews
}
}
只定义UIView
import UIKit
class SubView: UIView {
// 重新父类的init方法
// 指定初始化器
override init(frame: CGRect) {
super.init(frame: frame)
}
// 必要初始化期
/**
为什么一定要添加:
这是NSCoding protocol定义的,遵守了NSCoding protoaol的所有类必须继承。只是有的情况会隐式继承,而有的情况下需要显示实现。
什么情况下要显示添加:
当我们在子类定义了指定初始化器(包括自定义和重写父类指定初始化器),那么必须显示实现required init?(coder aDecoder: NSCoder),而其他情况下则会隐式继承,我们可以不用理会。
什么情况下会调用:
当我们使用storyboard实现界面的时候,程序会调用这个初始化器。
注意要去掉fatalError,fatalError的意思是无条件停止执行并打印。
在obj-c中可以通过下面代码实现
*/
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
网友评论