変換を実行しているビューがあります
originalTransform = self.appContainer.transform;
self.appContainer.transform = CGAffineTransformMakeScale(.8, .8);
デバイスを回転させない場合は、次を使用してこれを元に戻すことができます
self.appContainer.transform = CGAffineTransformScale(originalTransform, 1, 1);
残念ながら、デバイスを回転すると、ビューの変換マトリックスがビューの回転によって変更され、元のスケールが壊れます。回転後にスケールを元に戻すとUIView
、元のフルサイズに戻らないままになります。
元の変換行列と新しい変換行列の間で計算を行う必要があることは確かですが、これを行う方法がわかりません。この作業を行うために私ができた唯一のことは、回転する前にスケールを1に戻すことです
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
self.appContainer.transform = CGAffineTransformScale(originalTransform, 1, 1);
}
そして、その後、新しく変更された変換で再スケーリングします
-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
self.appContainer.transform = CGAffineTransformMakeScale(.8, .8);
}
これで期待どおりに動作しますが、フルスクリーンに戻ってから .8 スケールに戻るのではなく、新しい変換から正しい .8 スケールに移行したいと考えています。