矩阵的快速圆形元素

时间:2018-10-05 18:22:35

标签: swift cgaffinetransform

我有一个CGAffineTransform M,希望对矩阵的每个元素进行四舍五入:

 M.a = round(M.a),
 M.b = round(M.b),
 ...
 ...

有没有一种简单的方法可以在一行中做到这一点?

1 个答案:

答案 0 :(得分:1)

我不确定为什么要对矩阵元素进行四舍五入,或者这是否是个好主意。但是无论如何,SDK中没有什么可以让您“一行”地完成它。

您可以在扩展程序中添加一个访问器,以使其变得简单:

import CoreGraphics

extension CGAffineTransform {
    var elements: [CGFloat] {
        get { return [a, b, c, d, tx, ty] }
        set(n) { (a, b, c, d, tx, ty) = (n[0], n[1], n[2], n[3], n[4], n[5]) }
    }
}

extension CGAffineTransform {
    mutating func round() {
        elements = elements.map({ $0.rounded() })
    }
}