2010-06-18 54 views
1

当设备旋转到横向时,我正在使用以下命令来缩放和重新定位UIView图层。旋转时出现Transform.Translation问题

[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"]; 

的问题是,rotaing回画像后,该层是“旅行”,即在x,y偏移正在逐渐改变(增加x,减少y)。比例似乎很好(即不增加,在重复旋转时递减)

任何人都可以提出一个合适的解决方案吗?

+0

如果我删除纵向模式下的比例尺,问题就会消失,所以我想这个顺序可能很重要。或者我需要将transalte和scale操作分离成单独的方法? – 2010-06-19 13:39:59

+0

订单可能很重要。尝试在翻译后进行比例操作。 – JAB 2010-06-21 13:53:13

回答

0

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

编辑:尝试做一些事情,如使用一个较小的x翻译在变换回来,或使用正x译文和非零翻译。

事实上,如果每次翻译的金额保持不变,那么它可能与您提供的翻译有关。您可能过度补偿了首先需要翻译的任何内容,这可能是问题的根源。

+0

没有偏移,每个旋转回肖像远远多于浮点错误 – 2010-06-18 19:51:56

+0

@echo_bach:那么我明白了。改写我的答案。 – JAB 2010-06-18 20:01:58