上下文狀態(tài)棧
- 需求:畫一條橫線雀监,一條豎線
- 獲取上下文
- 在內(nèi)存中開辟了一個上下文區(qū)域啤月,分為存放路徑、存放狀態(tài)兩個部分
-
描述路徑
- 把路徑添加到上下文
- 把路徑添加到存放路徑的區(qū)域
- 橫線:線寬10蹂析,顏色紅色
- 設(shè)置上下文狀態(tài)
- 兩條線同時改變了=グ住糯钙!
- 當(dāng)調(diào)用stroke方法時粪狼,會把上下文當(dāng)中存放的所有路徑取出來,把上下文當(dāng)中的狀態(tài)運(yùn)用到所有的路徑當(dāng)中
- 所以兩條線狀態(tài)都被修改
- 上一個路徑添加顯示之后任岸,再去添加一個路徑再榄,再設(shè)置上下文狀態(tài)
- 設(shè)置上下文狀態(tài)
- 顯示到view上面
一個路徑只能對應(yīng)一個狀態(tài)
- 在修改上下文狀態(tài)之前,保存上下文狀態(tài)
- CGContextSaveState()
- 從上下文狀態(tài)棧中做恢復(fù)狀態(tài)
- CGContextStateRestoreGState
- 取出最上面(棧頂)的狀態(tài)享潜,把當(dāng)前狀態(tài)覆蓋掉
上下文矩陣操作
- 形變操作(平移旋轉(zhuǎn)縮放)
- 畫一個 橢圓
CGContextTranslateCTM
CGContextRotateCTM
CGContextScaleCMT
必須要在添加路徑之前做操作矩陣操作