Как изменить размер modalViewController с помощью UIModalPresentationPageSheet - PullRequest
1 голос
/ 23 января 2012

У меня есть модальный контроллер вида, который я показываю с UIModalPresentationPageSheet.Проблема в том, что его размер по умолчанию слишком велик для моего контента: поэтому я хочу изменить размер кадра, чтобы настроить его в соответствии с моим контентом.

Кто-нибудь знает способ / способ сделать это?

Спасибо

Ответы [ 3 ]

6 голосов
/ 01 октября 2012

На самом деле вы можете изменить размер контроллера представления, который будет представлен в 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 голосов
/ 26 января 2012

Вы не можете изменить размер UIModalPresentationPageSheet, поскольку его размер нельзя изменить.

0 голосов
/ 23 января 2012

Это работает для изменения размера контроллера представления, который представлен как 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;
...