divided(atDistance: from fromEdg

2017-06-08  本文已影响49人  小白猿

偶然看喵神的《swifter》对元组的讲解的时候,有一个divided方法,看方法的返回结果实在想不明白,就写了个demo研究了一下,也制作了一些图片

方法介绍

public func divided(atDistance: CGFloat,
                 from fromEdge: CGRectEdge) 
          -> (slice: CGRect, remainder: CGRect)

按照书中给介绍,第一个返回值是定义为small,第二个返回值定义为large,第二个参数是个枚举

public enum CGRectEdge : UInt32 {

    case minXEdge

    case minYEdge

    case maxXEdge

    case maxYEdge
}

通过第四个枚举的参数变化调用,结果如下

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))
    }

// 控制台打印结果
(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开头的理解为长度减去偏移量剩余的值

上一篇下一篇

猜你喜欢

热点阅读