Быстрые круглые элементы матрицы - PullRequest
0 голосов
/ 05 октября 2018

У меня есть CGAffineTransform M, и я хочу округлить каждый элемент матрицы следующим образом:

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

Есть ли простой способ сделать это в одну строку?

1 Ответ

0 голосов
/ 05 октября 2018

Я не уверен, почему вы хотите обвести свои матричные элементы или это хорошая идея.Но в любом случае, в 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() })
    }
}
...