divided(atDistance: from fromEdge: )

偶然看喵神的《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开头的理解为长度减去偏移量剩余的值

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,269评论 19 139
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,856评论 0 9
  • 有个网友问我学急救有用吗? 我说你家有青春期以下的儿童吗?他说有。 我说你家有65岁以上的老人吗?他说有。 我告诉...
    赤脚急救侠阅读 261评论 0 0
  • 消失这几天的感觉 出差 路上 疲惫不堪 心灵和肉体 大家尽然沉浸在美好的六一 接着来说小时候的事情 夏末未至 秋意...
    Wennas阅读 172评论 0 1
  • 拿到这本《把时间当做朋友》源于今年报了一个商学院的训练营,这是其推荐的第一本书,再加上书到手的时候,罗胖《时间的朋...
    冬日霞光阅读 664评论 0 0