Swift-UIKit-UIView

1.描述

苹果官方文档描述:

  • An object that manages the content for a rectangular area on the screen.
  • UIView是一个用于管理屏幕上的一个矩形区域内容的对象.
class UIView : UIResponder

UIView继承自UIResponder,这里不展开描述.

视图(View)是我们App与用户交互的基本组成部分,UIView定义了对于所有视图的通用行为.视图通过矩形边界渲染内容,可以处理内容上面的任何交互.我们还可以通过UIView的子类来绘制更加复杂的内容.同时UIKit也提供给我们一些现有的子类来方面我们开发App.

下面介绍一些视图对象的职责:

  • 绘制和动画

    • 通过UIKit或者Core Graphics库来绘制矩形区域的内容
    • 某些视图属性可以通过动画方式变化
  • 布局和子视图管理

    • 视图可以包含0个以上的子视图
    • 视图可以调整他们子视图的大小和位置
    • 使用自动布局来定义视图在视图树中的大小和位置的规则
      视图树:一个方便管理视图内容的,有子视图和父视图关系的层级关系树,父视图和子视图是一对多关系.
  • 处理交互事件

    • 视图是UIResponder的子类,所以能够顾响应触摸和其它类型的事件
    • 视图可以设置手势识别来处理一般的手势操作

可以使用addSubview(_:)来添加任意子视图,最后添加的视图在父视图最上方,视图使用z-order来区分层级关系.可以使用insertSubview(_:aboveSubview:)insertSubview(_:belowSubview:)来在添加时候改变视图的索引位置,对于已经添加的视图可以通过exchangeSubview(at:withSubviewAt:)来改变视图位置.

2.代码实例

    //初始化视图并且指定frame
    let myView = UIView(frame: CGRect(x: 100, y: 100, width: 100, height: 100))
    //设置背景色
    myView.backgroundColor = UIColor.red
    
    //默认情况下,一个视图的tintColor为nil,它会使用父视图tintColor属性的值。如果在视图层次结构中没有找到一个非默认的tintColor值,则会使用系统定义的颜色值(蓝色,RGB值为[0,0.478431,1]),一般用于button的文字颜色,在UIView上没有效果
    myView.tintColor = UIColor.green
    
    //添加子视图
    view.addSubview(myView)
    //设置隐藏
    myView.isHidden = true;
    //设置透明度
    myView.alpha = 0.5;
    
    //frame
    let frame = myView.frame
    //bounds
    let bounds = myView.bounds

    //中心位置
    let centerPoint = myView.center
    print("frame is \(frame),\nbounds is \(bounds),\ncenterPoint is \(centerPoint)\n")
    
    //父视图
    let superView = myView.superview
    print("superView is \(String(describing: superView))")
    
    //子视图集合
    let subViews: Array = myView.subviews
    print("subViews is \(subViews)")
    
    //接收view的window对象,如果该view被添加到某个window上则返回window对象,否则返回nil
    let window = myView.window
    print("window is \(String(describing: window))")
    
    //判断是否是参数视图或者其子视图
    let isDescendant = myView.isDescendant(of: view)
    let isDescendant = myView.isDescendant(of: UIView())
    print("isDescendant is \(isDescendant)")
    
    //安全区域的边界值
    print("myView.safeAreaInsets is \(myView.safeAreaInsets)")
    //view的标识,默认为0
    print("myView.tag is \(myView.tag)")
    
    //设置view的tag
    myView.tag = 100
    //获取对应tag的view对象
    let tagView = view.viewWithTag(100)
    print("tagView  is \(tagView!)")
    
    let subView = UIView(frame: CGRect(x: 10, y: 10, width: 50, height: 50))
    subView.backgroundColor = UIColor.systemBlue
    myView.addSubview(subView)

    /**
     *[viewB convertRect:viewC.frame toView:viewA];
     *计算viewB上的viewC相对于viewA的frame
     *
     */
    print("myView.convert(subView.frame, to: self.view) is \(myView.convert(subView.frame, to: self.view))")
    
    //简单是View动画
    UIView.animate(withDuration: 1.0) {
        myView.frame = CGRect(x: 150, y: 150, width: 100, height: 100)
    }
    
    print("======Hello UIView!======")
  • 工程下载地址:

https://github.com/DeveloperZhang/SwiftStudyDemo

3.总结

UIView是一个最基础常见的视图类,可以参考文档进行深入学习:UIKit->Views and Controls->UIView

你可能感兴趣的:(Swift-UIKit-UIView)