プログラムで作成したUIScrollViewがあり、その背後にあるUIViewのサイズとして作成しています。私はviewDidAppear
基本的に持っています:
UIScrollView *scrollView= [[UIScrollView alloc] initWithFrame:mainView.bounds];
//mainView being the UIView behind
デバイスが回転すると、当然、バックグラウンドのUIViewは境界をより広く、より短く変更します(ただし、x、y≠y、x)。
私の-(void)didRotateFromInterfaceOrientation:
中に`NSLog(@"%@ "、NSStringFromCGRect(mainView.bounds));を入れて、mainViewの境界を切り替えましたが、これを行うと:
-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
scrollView.bounds = mainView.bounds;
NSLog(@"%@", NSStringFromCGRect(scrollView.bounds));
NSLog(@"%@", NSStringFromCGRect(mainView.bounds));
}
それでも間違って表示されます。NSLogは両方のビューで同じ境界をログアウトしますが、画面上ではmainViewが正しく、元の(0,0)がmainViewの外側にあるかのように、scrollViewが反転したように見えます。サイズが間違って反転しています。何かを再描画する必要がありますか、それとも間違った場所でこれらすべてを呼び出していますか?または.bounds
、使用するのに適切な変数ではありませんか?
編集
フレームを更新することは、を使用してフレームを再開することとは異なることに気付きinitWithFrame:
ましたが、同じ方法で現在のコンテンツを同じままにしておきたいと思います。