2012-05-02 16 views
6

Mam podzieloną na segmenty kontrolę. Po każdym wyświetleniu widoku utworzę element przycisku paska, aby go przytrzymać i ustawić jako element pasków narzędzi. Problem, który mam, polega na tym, że podzielona na segmenty kontrolka nie zapełni przestrzeni na pasku narzędzi, nawet jeśli jest ustawiona na zachowanie wypełniające przestrzeń.Jak mogę mieć wypełnioną spacjami segmentowaną kontrolę na pasku narzędzi w aplikacji na iOS?

W jaki sposób można uzyskać segmentowaną kontrolę segmentu na pasku narzędzi w aplikacji na iOS?

Odpowiedz

1

Wygląda na to, że próbujesz uzyskać niestandardowe zachowanie paska narzędzi z paska narzędzi UIToolbar. Dlaczego nie po prostu upuścić tam UIView i wypełnić go UISegmentedControl w normalny sposób? Czy są jakieś specyficzne funkcje paska UIToolbar, którego potrzebujesz?

0

Dla UIViews w ogóle nie ma "zachowania wypełniającego przestrzeń". Otrzymują rozmiar, do którego są przypisani. Wszystko, co można zrobić, to:

  1. ustawił jeszcze automatycznej zmiany maskę kontrolować jak są one zmniejszane, jeżeli ich widok rodzic zmienia swój rozmiar
  2. ustawił jeszcze UIViewContentMode kontrolować, w jaki sposób zmiany rozmiaru ich treść (ważne dla UIImageViews, dla przykładem)

W twoim przypadku, można wykonać następujące czynności, aby uzyskać UIToolbar zawierający UISegmentedControl że jest tak szeroki, jak na pasku narzędzi:

(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]; 
}