向きを変えたら、ビューコントローラーの背景画像を変えたいのですが。次のように、shouldAutorotateToInterfaceOrientationでsetupGUIForOrientation関数を呼び出します。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
[self setupGUIForOrientation:interfaceOrientation];
return YES;
}
setupGUIForOrientation関数:
-(void)setupGUIForOrientation:(UIInterfaceOrientation)orientation
{
if(!background) background = [[UIImageView alloc] init];
UIImage* image = [[StorageProvider storage].imageProvider getImageForSurfaceElement:@"background"];
int width = 0;
int height = 0;
CGRect bounds = [[UIScreen mainScreen] bounds];
if(UIInterfaceOrientationIsPortrait(orientation)) {
width = MIN(bounds.size.width, bounds.size.height);
height = MAX(bounds.size.width, bounds.size.height);
} else {
width = MAX(bounds.size.width, bounds.size.height);
height = MIN(bounds.size.width, bounds.size.height);
}
background.frame = CGRectMake(0, 0, width, height);
[self.view addSubview: background];
[self.view sendSubviewToBack: background];
[background setImage:image];
}
1つを除いて、すべてが良好です(画像とフレームが変更されます)。回転が発生すると、ビューコントローラーの背景色が1秒間表示されますが、これは非常に醜いです。なんとか防げますか?そして、この関数をより良い方法でコーディングできますか?助けてくれてありがとう!