swift

swift中UIView的使用

2016-12-18  本文已影响0人  不安分心

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")
    }
    
}
上一篇下一篇

猜你喜欢

热点阅读