偶然看喵神的《swifter》對元組的講解的時候烫饼,有一個divided方法,看方法的返回結(jié)果實(shí)在想不明白,就寫了個demo研究了一下,也制作了一些圖片
方法介紹
public func divided(atDistance: CGFloat,
from fromEdge: CGRectEdge)
-> (slice: CGRect, remainder: CGRect)
按照書中給介紹弄砍,第一個返回值是定義為small,第二個返回值定義為large输涕,第二個參數(shù)是個枚舉
public enum CGRectEdge : UInt32 {
case minXEdge
case minYEdge
case maxXEdge
case maxYEdge
}
通過第四個枚舉的參數(shù)變化調(diào)用音婶,結(jié)果如下
static func tupleTest() {
let rect = CGRect(x: 0, y: 0, width: 100, height: 100)
print(rect.divided(atDistance: 20, from: .minXEdge))
print(rect.divided(atDistance: 20, from: .minYEdge))
print(rect.divided(atDistance: 20, from: .maxXEdge))
print(rect.divided(atDistance: 20, from: .maxYEdge))
}
// 控制臺打印結(jié)果
(slice: (0.0, 0.0, 20.0, 100.0), remainder: (20.0, 0.0, 80.0, 100.0))
(slice: (0.0, 0.0, 100.0, 20.0), remainder: (0.0, 20.0, 100.0, 80.0))
(slice: (80.0, 0.0, 20.0, 100.0), remainder: (0.0, 0.0, 80.0, 100.0))
(slice: (0.0, 80.0, 100.0, 20.0), remainder: (0.0, 0.0, 100.0, 80.0))
然后我繪制了一張圖,其中褐色是以slice為frame占贫,紅色是以remainder為fram
minX.png
minY.png
maxX.png
maxY.png
解析 min開頭理解為最小的偏移量桃熄,max開頭的理解為長度減去偏移量剩余的值