2012-04-16 13 views
5

Estoy trabajando en Xcode 4.2 y estoy desarrollando una aplicación en la que deseo que la pantalla de menú use una vista dividida. Realmente, todo lo que necesito para Split View Controller es dividir algunas de las opciones del menú en un panel izquierdo y un panel derecho. Quiero ser capaz de establecer tamaños personalizados para los controladores de vista maestra y de detalles, pero nada parece funcionar para mí. He intentado actualizar los tamaños de cuadro para cada controlador de vista con el código como:¿Cambia el tamaño de los controles principales y de vista detallada en un controlador de vista dividida?

[self.view setFrame:CGRectMake(0, 0, 768, 502)]; 

en las funciones viewDidLoad, pero eso no parece afectar a nada.

¿Hay alguna manera de establecer tamaños personalizados para los controladores de vista maestra y de detalles de un controlador de vista dividida sin instanciar los controladores de vista en, por ejemplo, el archivo AppDelegate.m? Quiero poder editar cada uno de los controladores de vista en el guión gráfico, ya que son pantallas de menú con muchos botones y tal.

Respuesta

10

Edit: En iOS 8+, los anchos relativos se pueden cambiar especificando las propiedades Minimum/maximumPrimaryColumnWidth o la preferencePrimaryColumnFraction preferida.

La respuesta a continuación sigue siendo cierto para iOS < 8:


No se puede cambiar el tamaño de un controlador de vista dividida.

Ver aquí: http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html

"La clase UISplitViewController es un controlador de vista recipiente que administra dos hojas de información El primer panel tiene una anchura fija de 320 puntos y una altura que coincide con la altura de la ventana visible El segundo.. el panel llena el espacio restante ".

+0

Hmm, bien, gracias. ¿Hay alguna otra solución que potencialmente podría utilizar? Todo lo que realmente necesito es una vista con dos paneles verticales donde pueda elegir un tamaño para cada uno. – generaltsow

+0

Puede hacer una gran vista con dos vistas y asignar la vista de cada una en el código. –

4

Utilice MGSplitViewController. Ofrece una API similar a UIViewController, pero ofrece funciones adicionales, como la posición dividida, que es lo que necesita.

+0

¿Hay alguna versión más reciente de este controlador de vista? Parece anticuado y sin apoyo. Sin embargo, se ejecuta en iOS7. – fatuhoku

+0

@fatuhoku No estoy seguro, dejé de seguir 'MGSplitViewController' y construí mi propio contenedor para' UISplitViewController' que me permitió lograr lo que necesitaba. Para ser sincero, si tuviera que hacer un controlador de vista dividida ahora, haría uno nuevo personalizado en lugar de usar 'MGSplitViewController', ya que es realmente bastante fácil de lograr con la contención del controlador de vista padre/hijo. –

+0

Sí, el uso de vistas de contenedor me ha funcionado bien hasta ahora también. Tampoco utilicé MGSplitViewController al final. – fatuhoku

-1
- (CGFloat)splitView:(NSSplitView *)splitView constrainMinCoordinate:(CGFloat)proposedMinimumPosition ofSubviewAt:(NSInteger)dividerIndex; 
{ 

    return proposedMinimumPosition + 238; 
} 

- (CGFloat)splitView:(NSSplitView *)splitView constrainMaxCoordinate:(CGFloat)proposedMaximumPosition ofSubviewAt:(NSInteger)dividerIndex; 
{ 
    return proposedMaximumPosition - 200; 
} 

antes de que el método anterior delegado añadir [splitView addDelegate:self];

+0

Estos métodos son para Mac, con NSSplitViewDelegate. El OP no especificó la aplicación Mac o iOS, sin embargo, tienen una etiqueta que dice 'uisplitviewcontroller' que es para iOS. – cnotethegr8

Cuestiones relacionadas