1

私はUIModalPresentationPageSheetで表示するモーダルビューコントローラを使用しました。問題は、彼のデフォルトのサイズが私のコンテンツにとって大きすぎることです:私は私のコンテンツに合わせて調整するフレームのサイズを変更したいです。UIModalPresentationPageSheetを使用してmodalViewControllerのサイズを変更する方法

誰かがこれを行う方法/トリックを知っていますか?これはUIModalPresentationFormSheetとして提示のビューコントローラのサイズを変更するために働く

おかげ

+0

'UIModalPresentationFormSheet'にキーボードを隠す問題があります。 'UITextField'で' resignFirstResponder'を呼び出すと、キーボードは閉じられません。 – Fry

+0

http://stackoverflow.com/a/4850751/2832188 – ManicMonkOnMac

答えて

0

あなたはUIModalPresentationPageSheetのサイズを変更することはできません。私はそれが仕事やないよ場合、私はわからないんだけど、この試みを与えるだろう。

+1

実際には、UIModalPresentationPageSheetで提示され、そのスーパービューを参照してそのサイズを変更するカスタムViewControllerを使用することができます。私は以下の例を持っています。 – Hrafn

+0

これは、ここで確認できます。http://stackoverflow.com/a/4850751/2832188 – ManicMonkOnMac

-1

。その大きさはmodifableではないので

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; 
+0

が動作しません。私の記事では、説明したくない何らかの理由でPageSheetをカスタムフレームで使用する必要があると述べました。 FormSheetを使用することはできません。 – Fry

6

実際、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で動作します。

+0

この回答は素晴らしいです。私はこの全く同じことが必要なので、ポスターの質問を理解しています。できます。これは承認された回答でなければなりません。 –

+1

この回答は素晴らしいスタートですが、カスタムサイズのフォームビューを中央に配置する方法がないように思われることによって、極端に制限されています。さまざまなビューとスーパービューの中心には、望ましい効果がありません。 – memmons

関連する問題