2012-05-02 24 views
6

Tengo un control segmentado. Cada vez que la vista ha terminado de aparecer, creo un elemento de botón de barra para mantenerlo y establecerlo como el elemento de barras de herramientas. El problema que tengo es que el control segmentado no llenará el espacio en la barra de herramientas, a pesar de que está configurado para tener un comportamiento de relleno de espacio.¿Cómo puedo tener un control segmentado de espacio en la barra de herramientas en una aplicación de iOS?

¿Cómo puedo tener un control segmentado de espacio en una barra de herramientas en una aplicación de iOS?

Respuesta

1

Parece que está intentando obtener un comportamiento de barra de herramientas no estándar fuera de una UIToolbar. ¿Por qué no simplemente colocar una UIView allí y llenarla con un UISegmentedControl de la forma habitual? ¿Hay alguna funcionalidad específica de la UIToolbar que necesita?

0

No existe un "comportamiento de relleno de espacio" para UIView en general. Obtienen el tamaño que les asignan. Todo lo que se puede hacer es:

  1. puesto su máscara de tamaño automático para controlar la forma en que cambian de tamaño si su vista padre cambia su tamaño
  2. puesto su UIViewContentMode para controlar cómo cambiar el tamaño de su contenido (importante para UIImageViews, por ejemplo)

En su caso, usted podría hacer lo siguiente para obtener una UIToolbar contiene un UISegmentedControl que es tan amplia como la barra de herramientas:

(void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // Create the toolbar; place it at the bottom of the view. 
    UIToolbar *myToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, self.view.bounds.size.height-44, self.view.bounds.size.width, 44)]; 
    myToolbar.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin; 
    [self.view addSubview:myToolbar]; 

    // Create the UISegmentedControl with two segments and "Bar" style. Set frame size to that of the toolbar minus 6pt margin on both sides, since 6pt is the padding that is enforced anyway by the UIToolbar. 
    UISegmentedControl *mySegmentedControl = [[UISegmentedControl alloc] initWithFrame:CGRectInset(myToolbar.frame, 6, 6)]; 
    // Set autoresizing of the UISegmentedControl to stretch horizontally. 
    mySegmentedControl.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin; 
    [mySegmentedControl insertSegmentWithTitle:@"First" atIndex:0 animated:NO]; 
    [mySegmentedControl insertSegmentWithTitle:@"Second" atIndex:1 animated:NO]; 
    mySegmentedControl.segmentedControlStyle = UISegmentedControlStyleBar; 

    // Create UIBarButtonItem with the UISegmentedControl as custom view, and add it to the toolbar's items 
    UIBarButtonItem *myBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:mySegmentedControl]; 
    myToolbar.items = [NSArray arrayWithObject:myBarButtonItem]; 
} 
Cuestiones relacionadas