对于给定的变换计算,
CGAffineTransform preferredTransform = CGAffineTransformMake(-1, 0, 0, -1, 1920, 1080);
CGAffineTransform transform1 = CGAffineTransformConcat(CGAffineTransformMakeTranslation(-preferredTransform.tx, -preferredTransform.ty), CGAffineTransformMakeRotation(M_PI));
NSLog(@"%@", NSStringFromCGAffineTransform(transform1));
输出为[-1, 1.2246467991473532e-16, -1.2246467991473532e-16, -1, 1920.0000000000002, 1079.9999999999998]
但我希望它为[-1, 0, 0, -1, 1920, 1080]
为什么舍入错误? 我应该以不同方式应用转换以产生圆形结果吗?
答案 0 :(得分:0)
在32位iPad上舍入是正确的,但是,在64位iPad上会出现舍入错误。由于M_PI的旋转与-1的缩放相同,因此可以通过将其更改为:
来轻松修复CGAffineTransform preferredTransform = CGAffineTransformMake(-1, 0, 0, -1, 1920, 1080);
CGAffineTransform transform1 = CGAffineTransformConcat(CGAffineTransformMakeTranslation(-preferredTransform.tx, -preferredTransform.ty), **CGAffineTransformMakeScale(-1, -1)**);
NSLog(@"%@", NSStringFromCGAffineTransform(transform1));
答案 1 :(得分:0)
指定的舍入错误是由64位架构引起的。如果在32位模拟器上启动,则不应该看到这些舍入错误。