UIModalPresentationPageSheet で表示するモーダル ビュー コントローラーがあります。問題は、デフォルトのサイズがコンテンツに対して大きすぎることです。そのため、フレームのサイズを変更して、コンテンツに合わせて調整したいと考えています。
これを行う方法/トリックを知っている人はいますか?
ありがとう。
UIModalPresentationPageSheet で表示するモーダル ビュー コントローラーがあります。問題は、デフォルトのサイズがコンテンツに対して大きすぎることです。そのため、フレームのサイズを変更して、コンテンツに合わせて調整したいと考えています。
これを行う方法/トリックを知っている人はいますか?
ありがとう。
実際には、UIModalPresentationPageSheet で表示されるビュー コントローラーのサイズを変更できます。これを行うには、カスタム ビュー コントローラー クラスを作成し、クラスに以下を追加する必要があります。
<!--The header file-->
@interface MyViewController: ViewController{
//Used to store the bounds of the viewController
CGRect realBounds;
}
<!--In the .m file-->
//viewDidLoad gets called before viewWillAppear, so we make our changes here
-(void)viewDidLoad{
//Here you can modify the new frame as you like. Multiply the
//values or add/subtract to change the size of the viewController.
CGRect newFrame = CGRectMake(self.view.frame.origin.x,
self.view.frame.origin.y,
self.view.frame.size.width,
self.view.frame.size.height);
[self.view setFrame:newFrame];
//Now the bounds have changed so we save them to be used later on
_realBounds = self.view.bounds;
[super viewDidLoad];
}
//viewWillAppear gets called after viewDidLoad so we use the changes
//implemented above here
-(void)viewWillAppear:(BOOL)animated{
//UIModalpresentationPageSheet is the superview and we change
//its bounds here to match the UIViewController view's bounds.
[super viewWillAppear:animated];
self.view.superview.bounds = realBounds;
}
そして、UIModalPresentationPageSheet を使用してこのビュー コントローラーを表示します。以上です。これは、この投稿の日付の時点で iOS 5.1.1 および iOS 6 で機能します。
サイズは変更できないため、UIModalPresentationPageSheet のサイズを変更することはできません。
これは、として表示されるView Controllerのサイズを変更するために機能しUIModalPresentationFormSheet
ます。私はこれを試してみますが、うまくいくかどうかはわかりません:
navController.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentModalViewController:navController animated:YES];
//these two lines are if you want to make your view smaller than the standard modal view controller size
navController.view.superview.frame = CGRectMake(0, 0, 200, 200);
navController.view.superview.center = self.view.center;