2011-04-27 24 views
6

estoy tratando de presentar un eso controlador de vista sólo la mitad de la altura usandoPresentar un controlador de vista que es la mitad del tamaño de la pantalla

[self presentModalViewController:menu animated:YES]; 

El problema es cuando se le presenta, el controlador de vista termina de la misma tamaño como la pantalla. También intenté hacer que el 'menú' fuera el tamaño completo de la pantalla y cambiar la transparencia de la vista a blanco, pero eso tampoco funciona.

Respuesta

8

Sólo tiene que utilizar la animación o animación transiciones básicas con un UIView que es la mitad del tamaño de la pantalla . Necesitará una vista de titular que agregue a la vista principal.

Coloque la vista de la mitad del tamaño debajo de la pantalla (halfView.y = 480 o 320 según la orientación).

Animate hacia arriba.

Algo como esto quizá:

// set up an animation for the transition between the views 
    CATransition *animation = [CATransition animation]; 
    [animation setDuration:0.5]; 
    [animation setType:kCATransitionPush]; 
    [animation setSubtype:kCATransitionFromBottom]; 
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; 

    [holderView addAnimation:animation forKey:@"SwitchToView1"]; 
5

En los dispositivos iPhone y iPod touch, la vista de modalViewController es siempre presentó pantalla completa. En iPad, la presentación depende del valor en propiedad modalPresentationStyle.

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html

Si desea cubrir sólo una parte de la pantalla se puede hacer una animación que se desliza un recipiente UIView y todo lo que desea mostrar a una posición en la pantalla.

Yo recomendaría que lea este post: Transparent Modal View on Navigation Controller

"Traté de hacer que el fondo de la vista blanco"

Esa duda no iba a funcionar, se podría haber escrito [UIColor clearColor] sin embargo, la vista del controlador de vista que está cubierta por el modal desaparecerá de la pantalla cuando finalice la animación. Entonces, si haces que el fondo sea blanco, probablemente termines viendo el fondo de la ventana, que es blanco y no es lo que deseas.

0

Realmente no desea intentar hacer esto con un UIViewController. Agregue una UIView a la vista del controlador actual, otorgue a esa vista su propio objeto controlador no UIViewController si necesita uno para administrar su comportamiento.

que cubren algunos de los detalles de cómo lo que está tratando de hacer es fuera del contrato proporcionado por UIViewController aquí: http://blog.carbonfive.com/2011/03/09/abusing-uiviewcontrollers/

Cuestiones relacionadas