UIViewController
サイズを変更した後、ビューを更新するにはどうすればよいですか?に似た方法が必要reloadData
ですUITableViewController
。
UIViewController
リロードせずにビューのサイズを変更する他の可能性はありますか?
私のコードは次のとおりです。
-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
orientation = toInterfaceOrientation;
if(orientation==3 || orientation==4)
{
heightBoxDimension1 = [GlobalData sharedGlobalData].heightLandscape;
widthBoxDimension1 = [GlobalData sharedGlobalData].widthLandscapeBig;
widthBoxDimension2 = [GlobalData sharedGlobalData].widthLandscapeSmall;
}
else
{
heightBoxDimension1 = [GlobalData sharedGlobalData].heightPortrait;
widthBoxDimension1 = [GlobalData sharedGlobalData].widthPortraitBig;
widthBoxDimension2 = [GlobalData sharedGlobalData].widthPortraitSmall;
}
for(UIView* view in self.view.subviews)
{
NSLog(@"%.0f %.0f %.0f %.0f ", view.frame.origin.x, view.frame.origin.y, view.frame.size.width, view.frame.size.height);
if(view.frame.size.width >400)
{
[view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, widthBoxDimension1, heightBoxDimension1)];
NSLog(@"%.0f %.0f %.0f %.0f ", view.frame.origin.x, view.frame.origin.y, view.frame.size.width, view.frame.size.height);
}
else
{
[view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, widthBoxDimension2, heightBoxDimension1)];
NSLog(@"%.0f %.0f %.0f %.0f ", view.frame.origin.x, view.frame.origin.y, view.frame.size.width, view.frame.size.height);
}
}
[self.view setNeedsDisplay];
}
私はグローバル変数のクラスを持っています。ここで、ビューの静的な寸法を入力します。同じ高さで幅が異なる2つのタイプのビューがあります。シミュレーターを回してこのメソッドを入力しますが、ビューのフレームを変更した後は、これらのビューをリロードしないでください...
コンソールの出力は次のとおりです。
2012-06-05 10:53:09.309 TemplateiPad2[12561:207] 8 8 752 318
2012-06-05 10:53:09.309 TemplateiPad2[12561:207] 8 8 752 446
2012-06-05 10:53:09.309 TemplateiPad2[12561:207] 8 334 372 318
2012-06-05 10:53:09.309 TemplateiPad2[12561:207] 8 334 372 446
リフレームは適切に行いますが、リロードしないでください。