2012-05-09 58 views
4

我有我表演用CGAffineTransformScale设备旋转后修改

originalTransform = self.appContainer.transform; 
self.appContainer.transform = CGAffineTransformMakeScale(.8, .8); 

Original Rotation

变换如果我不旋转设备,我可以扭转这一回原来的视图

self.appContainer.transform = CGAffineTransformScale(originalTransform, 1, 1); 

不幸的是,如果我旋转装置,该视图的变换矩阵得到由视图旋转修改,打破了原有规模。如果我在旋转后撤消缩放比例,则剩下UIView不能恢复到其原始大小。

After Rotation

After Original Scale

我敢肯定,我需要原始的变换矩阵和新之间的计算,但我不确定如何做到这一点。我已经能够做的,使这项工作的唯一一件事就是恢复比例回到1旋转前

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    self.appContainer.transform = CGAffineTransformScale(originalTransform, 1, 1); 
} 

然后是

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation    { 
    self.appContainer.transform = CGAffineTransformMakeScale(.8, .8); 
} 

这使得后与新修改的转型重新调整它它按照我的预期工作,但不是回到全屏,然后回到.8的比例,我希望它从新的转换到正确的.8比例。

+0

有你终于来处理呢?我正在寻找解决方案。 –

+0

我正在寻找解决方案太.. – Pipiks

回答

0

如果你想将它恢复到原来的,请尝试将转换为CGAffineTransformIdentity。

self.appContainer.transform = CGAffineTransformIdentity; 
+0

这不起作用,因为该视图的转型正在由设备旋转事件修改。通过设置它回到身份我得到相同的结果。设备旋转事件之后,视图的转换需要采用该方向的.8比例。 – MobileOverlord

+0

这不起作用 – trapper

0

我认为你必须使用删除所有自动尺寸口罩.....

[self.appContainer setAutoresizingMask:UIViewAutoresizingNone];