CGAffineTransformMake和CGAffineTransformMakeRotation之间的主要区别是什么?

时间:2018-02-23 09:52:14

标签: objective-c uitableview cgaffinetransform

有什么区别:

byte[] getArray(IntStream stream) {
    return stream.toArray();
}

$unsorted = array_merge($array1, $array2);
asort($unsorted);

我在聊天应用程序中使用表格视图,并使用上述方法转换表格,所以请帮我解决这个问题。

哪一个更好,为什么?

谢谢!

3 个答案:

答案 0 :(得分:2)

CGAffineTransformMake允许您直接设置变换的各个矩阵值,而CGAffineTransformMakeRotation可以使您的工作远离您,并允许您请求按您想要的量旋转某些内容的变换,无需了解矩阵的工作原理。最终结果是一样的。

第二个选项要好得多 - 很明显变换正在做什么以及做多少。任何不了解变换矩阵数学如何工作的读者或者那些单独的未命名参数意味着什么的读者(几乎所有读者,包括我自己)都不会知道第一行是做什么的。

可读性永远胜利。

答案 1 :(得分:0)

CGAffineTransformMake允许您自己设置转换,而其他基本上是为您执行此操作的便捷方法。

例如,CGAffineTransformMakeRotation评估为:

t' = [ cos(angle) sin(angle) -sin(angle) cos(angle) 0 0 ]

请注意,结果不一样。使用CGAffineTransformMakeRotation将导致(舍入值[-1, 0, 0, -1, 0, 0 ]。还有准确性方面。三角函数并不总是评估为您期望的确切值。在这种情况下,由于PI的不准确性,sin(-M_PI)实际变为-0.00000000000000012246467991473532而不是零,我认为。

就个人而言,我总是使用便捷方法,因为代码更容易理解。这种不准确通常是你不会注意到的。

答案 2 :(得分:0)

CGAffineTransformMake:返回根据您提供的值构建的仿射变换矩阵。

CGAffineTransformMakeRotation:返回根据您提供的旋转值构造的仿射变换矩阵。

来源网址:http://mirror.informatimago.com/next/developer.apple.com/documentation/GraphicsImaging/Reference/CGAffineTransform/Reference/function_group_1.html