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); 
} 

た後、新たに修正変換でそれを再スケールすることです私の期待通りに機能しますが、フルスクリーンに戻って0.8スケールに戻す代わりに、新しい変換から正しい.8スケールに移行したいと思います。

+0

は、あなたが最終的にこれを取り扱うことがありますか?私は解決策を探しています。 –

+0

解決策も探しています。 – Pipiks

答えて

0

元に戻したい場合は、変換をCGAffineTransformIdentityに設定してみてください。

self.appContainer.transform = CGAffineTransformIdentity; 
+0

デバイスの回転イベントによってビューの変換が変更されているため、これは機能しません。アイデンティティに戻すことで、私は同じ結果を得ています。デバイスの回転イベントの後、ビューの変換は、その方向の.8スケールにする必要があります。 – MobileOverlord

+0

これは動作しません – trapper

0

私はあなたが使用して、すべての自動サイズ変更マスクを取り除くために持っていると思う.....

[self.appContainer setAutoresizingMask:UIViewAutoresizingNone]; 
関連する問題