💻
ExistOrLive' Gitbook
  • README
  • ReadMe
  • 开发语言学习
    • Python
      • 0.概述
      • 1.基本数据类型
      • 2.变量
      • 3.函数
      • 4.运算符
      • 5.字符串
      • 6.列表
      • 7.元组
      • 8.集合
      • 9.字典
      • 10.流程控制
      • 12.函数
      • 13.模块
      • 14.输入输出格式化
      • 15.面向对象
    • Swift
      • 1.基础部分
        • 常量和变量以及基本类型_1
        • 常量和变量以及基本类型_2
      • 2.基本运算符
        • 基本运算符
      • 3.字符串和字符
        • 字符串
        • 字符串操作
      • 4.集合类型
        • 概述
        • Array
        • Set
        • Dictionary
      • 6.函数
        • 函数
        • 函数返回值
        • 函数类型
      • 7.闭包
        • 闭包
        • 闭包表达式
        • 尾随闭包
        • 捕获变量或常量
        • 闭包是引用类型
        • 逃逸闭包
        • 自动闭包
      • 8.枚举
        • 枚举
        • 枚举与switch语句
      • 9.类和结构体
        • 类和结构体
        • 属性
          • 属性
          • 属性观察器
          • 属性包装器
          • 全局变量和局部变量
          • 类属性
        • 方法
    • Shell
      • Shell变量和基本类型
      • Shell函数
      • Shell基本运算符
      • Shell脚本的参数
      • Shell流程控制
      • Shell输入输出
      • Shell文件包含
  • iOS
    • UI
      • UIKit
        • UIView
          • UIView
          • drawRect
        • UITableView
          • UITableView
          • UITableView的加载过程
  • 学习开发工具
    • 静态分析
      • OCLint
      • infer
      • SwiftLint
    • iOS构建工具
      • fastlane
        • fastlane
        • fastlane的安装
        • fastlane一键打包
        • fastlane证书管理
    • Cocoapods
      • 安装pod库-podfile
      • 创建pod库-podspec
  • 开源库
    • Tool
      • Swiftlint源码学习
      • 利用Swiftlint自定义规则实现自动化code review
由 GitBook 提供支持
在本页
  • Parameters
  • Discussion
  • Reference

这有帮助吗?

在GitHub上编辑
  1. iOS
  2. UI
  3. UIKit
  4. UIView

drawRect

上一页UIView下一页UITableView

最后更新于3年前

这有帮助吗?

Draws the receiver's image within the passed-in rectangle 在传入的矩形区域中绘制接收者的图像

   - (void) drawRect:(CGRect)rect;

Parameters

rect The portion of the view’s bounds that needs to be updated. The first time your view is drawn, this rectangle is typically the entire visible bounds of your view. However, during subsequent drawing operations, the rectangle may specify only part of your view.

视图边界需要更新的部分。 你的视图第一次绘制的时候,矩形区域特指视图的整个可视区域。 但是当随后的(subsequent)绘制操作,矩形区域只是视图的部分区域。

Discussion

  • drawRect:方法的默认实现什么都不做。使用UIKit 和 CoreGraphics技术的子类需要重写这个方法,并实现相应的绘制代码。但是如果仅仅是想显示特定的背景颜色或者使用底层对象(underlying layer object),没必要重写该方法

  • 当这个方法调用的时候,UIKit已经配置好合适的绘制环境,你可以简单的调用任何绘制的方法和函数。尤其是,UIKit创建和配置了一个graphics context 并调整它的形状让它的原点与矩形区域的原点匹配。可以通过调用UIGraphicsGetCurrentContext函数获取Graphics context的引用,但是不能够建立强引用,因为它可能在两次的drawRect:调用之间发生改变

  • 必须把绘制的内容限制在rect指定的矩形区域中

  • 如果直接继承UIView,drawRect实现方法不需要调用父类的drawRect,因为UIView的drawRect什么都没有做;但是间接继承,必须调用父类的drawRect

  • 在代码中不应该直接调用drawRect,而是调用setNeedDisplay和setNeedDisplayAtRect 去触发重新绘制

Reference

drawRect 苹果开发者文档