2014-07-18 15 views

risposta

30

Per iOS 8 è necessario impostare la proprietà "preferredContentSize", ma per iOS 7 e precedenti è necessario impostare la proprietà superview.frame.

codice Esempio:

UIViewController* modalController = [[UIViewController alloc]init]; 
modalController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
modalController.modalPresentationStyle = UIModalPresentationFormSheet; 

CGPoint frameSize = CGPointMake([[UIScreen mainScreen] bounds].size.width*0.95f, [[UIScreen mainScreen] bounds].size.height*0.95f); 
CGRect screenRect = [[UIScreen mainScreen] bounds]; 
CGFloat screenWidth = screenRect.size.width; 
CGFloat screenHeight = screenRect.size.height; 

// Resizing for iOS 8 
modalController.preferredContentSize = CGSizeMake(frameSize.x, frameSize.y); 
// Resizing for <= iOS 7 
modalController.view.superview.frame = CGRectMake((screenWidth - frameSize.x)/2, (screenHeight - frameSize.y)/2, frameSize.x, frameSize.y); 

UIViewController *vc = [[[[UIApplication sharedApplication] delegate] window] rootViewController]; 
[vc presentViewController:modalController animated:YES completion:nil]; 
+0

dolce, quello ha fatto il trucco! –

+0

a volte questo funziona solo se si imposta il ridimensionamento * dopo * si presenta il controller di vista – Micho

+0

non funziona per iOS7 con XCode5 per me. funziona su iOS8 con XCode6 – JerryZhou

9

questo dipende attivo se si utilizza UIPopoverPresentationController o UIPresentationController. Puoi provare a impostare la proprietà "preferredContentSize" come nuova dimensione del contenuto (la proprietà "contentSizeForViewInPopover" è deprecata in iOS 8).

+0

ha fatto questo Lavoro per te? Fammi sapere se hai bisogno di aiuto. – kevinl

+1

Ho infine eseguito una soluzione alternativa creando una visualizzazione personalizzata. Comunque segnerò la tua risposta come valida. Grazie! –

6

Per ridimensionare una vista s' UIViewController, quando è già presentata con UIModalPresentationFormSheet modale presentazione stile ed è visibile, utilizzare per iOS 8+:

self.preferredContentSize = CGSizeMake(width, height); 

[UIView animateWithDuration:0.25 animations:^{ 
    [self.presentationController.containerView setNeedsLayout]; 
    [self.presentationController.containerView layoutIfNeeded]; 
}]; 
Problemi correlati