旋转时的Transform.Translation问题

时间:2010-06-18 13:39:35

标签: objective-c rotation transform

当设备旋转为横向时,我正在使用以下内容来缩放和重新定位UIView图层。

 [containerView.layer setValue:[NSNumber numberWithFloat: 0] forKeyPath: @"transform.translation.x"];
 [containerView.layer setValue:[NSNumber numberWithFloat: 0] forKeyPath: @"transform.translation.y"];    
 [containerView.layer setValue:[NSNumber numberWithFloat: 1] forKeyPath: @"transform.scale.x"]; //[NSNumber numberWithInt:1]
 [containerView.layer setValue:[NSNumber numberWithFloat: 1] forKeyPath: @"transform.scale.y"];

然后旋转回肖像时的下载

 [containerView.layer setValue:[NSNumber numberWithFloat: -75] forKeyPath: @"transform.translation.x"];
 [containerView.layer setValue:[NSNumber numberWithFloat: 0] forKeyPath: @"transform.translation.y"];    
 [containerView.layer setValue:[NSNumber numberWithFloat: .7] forKeyPath: @"transform.scale.x"]; //[NSNumber numberWithInt:1]
 [containerView.layer setValue:[NSNumber numberWithFloat: .7] forKeyPath: @"transform.scale.y"];

问题在于在旋转回到肖像之后,该层是“行进”的,即x,y偏移逐渐变化(增加x,减小y)。比例似乎很好(即不增加,重复旋转减少)

有人可以建议一个合适的解决方案吗?

1 个答案:

答案 0 :(得分:0)

也许是由于浮点数舍入错误在某种程度上存在于浮点数的所有实现中?虽然如果是这种情况,你最好的选择可能就是在代码中的某处进行某种截断或舍入。

编辑:尝试做一些事情,比如在变换回来使用较小的x平移,或使用正x平移和非零y平移。

事实上,如果每次翻译的数量保持不变,那么它可能与您提供的翻译有关。您可能会对首先需要翻译的内容进行过度补偿,这可能是问题的根源。