2013-03-22 22 views
13

mam ustawić wygląd UISegmentedControl używając następującego kodu,jak ustawić domyślny wygląd UISegmentedControl?

UIImage *segmentSelected = [[UIImage imageNamed:@"Segment_Unselected.png"] 
          resizableImageWithCapInsets:UIEdgeInsetsMake(0, 12, 0, 12)]; 
UIImage *segmentUnselected = [[UIImage imageNamed:@"Segment_Selected.png"] 
           resizableImageWithCapInsets:UIEdgeInsetsMake(0, 12, 0, 12)]; 

[[UISegmentedControl appearance] setBackgroundImage:segmentUnselected 
              forState:UIControlStateNormal 
             barMetrics:UIBarMetricsDefault]; 
[[UISegmentedControl appearance] setBackgroundImage:segmentSelected 
              forState:UIControlStateSelected 
             barMetrics:UIBarMetricsDefault]; 

[[UISegmentedControl appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: 
                 [UIColor colorWithRed:77.0/255.0 green:45.0/255.0 blue:8.0/255.0 alpha:1],UITextAttributeTextColor, 
                 [UIColor clearColor], UITextAttributeTextShadowColor, 
                 [NSValue valueWithUIOffset:UIOffsetMake(0, 0)], UITextAttributeTextShadowOffset, 
                 [UIFont fontWithName:@"HelveticaNeue-Bold" size:16.0], UITextAttributeFont, nil] forState:UIControlStateNormal]; 

[[UISegmentedControl appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: 
                 [UIColor whiteColor],UITextAttributeTextColor, 
                 [UIColor clearColor], UITextAttributeTextShadowColor, 
                 [NSValue valueWithUIOffset:UIOffsetMake(0, 0)], UITextAttributeTextShadowOffset, 
                 [UIFont fontWithName:@"HelveticaNeue-Bold" size:16.0], UITextAttributeFont, nil] forState:UIControlStateSelected]; 

[[UISegmentedControl appearance] setDividerImage:[UIImage imageNamed:@"SegmentedControl_Divider.png"] 
          forLeftSegmentState:UIControlStateNormal 
           rightSegmentState:UIControlStateNormal 
             barMetrics:UIBarMetricsDefault]; 

i mam doskonałe wyjście enter image description here

ale teraz chcę ustawić domyślny wygląd UISegment jak enter image description here

więc co mam zrobić ???

+0

@BillWoodger Właśnie wprowadzałem ten kod, dokonałem zmiany, co praktycznie znalazłem i było to wyraźnie widoczne w kodzie. Wygląda na to, że jest to błąd kopiuj-wklej. Wiem, że każdy, kto spróbuje użyć tego kodu, w końcu znajdzie błąd, ale ja tylko próbowałem oszczędzać czas innych :-) –

+0

@BillWoodger masz rację. Powinienem wspomnieć o problemie w komentarzu tutaj. Nieprawidłowe obrazy są przypisane do powyższych zmiennych 'segmentSelected' i' segmentUnselected'. –

+0

@AdilMalik Zawsze możesz dodać to jako odpowiedź sam. Odpowiedzi są bardziej widoczne niż komentarze. Jeśli edytujesz pytanie, możesz pomylić przyszłych czytelników, którzy zastanawiają się, dlaczego odpowiedzi nie odzwierciedlają pytania (niekoniecznie w tym przykładzie). Proponuję dodać odpowiedź, a następnie możemy usunąć wszystkie te komentarze, aby zachować porządek. –

Odpowiedz

14

umieścić ten kod na viewcontroller że chcesz z domyślnego sterownika

UIImage *segmentSelected = [[UIImage imageNamed:nil]resizableImageWithCapInsets:UIEdgeInsetsMake(0, 12, 0, 12)]; 
UIImage *segmentUnselected = [[UIImage imageNamed:nil]resizableImageWithCapInsets:UIEdgeInsetsMake(0, 12, 0, 12)]; 
    
[[UISegmentedControl appearance] setBackgroundImage:segmentUnselected 
                                forState:UIControlStateNormal 
                                barMetrics:UIBarMetricsDefault]; 
[[UISegmentedControl appearance] setBackgroundImage:segmentSelected 
                                forState:UIControlStateSelected 
                                barMetrics:UIBarMetricsDefault]; 
        
[[UISegmentedControl appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: 
           [UIColor colorWithRed:77.0/255.0 green:45.0/255.0 blue:8.0/255.0 alpha:1],UITextAttributeTextColor, 
           [UIColor clearColor], UITextAttributeTextShadowColor, 
           [NSValue valueWithUIOffset:UIOffsetMake(0, 0)], UITextAttributeTextShadowOffset, 
           [UIFont fontWithName:@"HelveticaNeue-Bold" size:16.0], UITextAttributeFont, nil] forState:UIControlStateNormal]; 
        
[[UISegmentedControl appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: 
           [UIColor whiteColor],UITextAttributeTextColor, 
           [UIColor clearColor],UITextAttributeTextShadowColor,  
           [NSValue valueWithUIOffset:UIOffsetMake(0, 0)],UITextAttributeTextShadowOffset, 
           [UIFont fontWithName:@"HelveticaNeue-Bold" size:16.0], UITextAttributeFont, nil] forState:UIControlStateSelected]; 
         
[[UISegmentedControl appearance] setDividerImage:[UIImage imageNamed:nil] 
           forLeftSegmentState:UIControlStateNormal 
           rightSegmentState:UIControlStateNormal 
           barMetrics:UIBarMetricsDefault]; 
+0

to jest dokładnie to, co mówię ... – wasim

+0

gdzie jest @tosa ?? –

+0

@WasimMalek: odszedł. –

2

usunięcie kodu dla przypisanych zdjęć.

+0

ale chcę użyć segmentu domyślnego tylko dla jednego widoku, a dla innego chcę segmentu niestandardowego ,, Mam ten kod powrotu w rootviewcontroller aplikacji, więc jak załadować domyślny wygląd segmentu? –

+0

dla innych widoków pozostaw kod bez zmian. W widoku z domyślnym segmentem możesz użyć budowniczego interfejsu lub dodać domyślny segment według kodu. –

+0

Mam spróbować tego w konstruktorze interfejsów, pokaż mi segment domyślny, ale kiedy uruchomię aplikację, pokazuje mi stary segment wyglądu, który ustawiłem wcześnie .. :( –

4

zestaw imagename do zera na powyższy kod i umieścić go na widoku, w którym chcesz domyślne zachowanie

2

ustawić obraz segmentu kontroler do zera. Następnie wyczyść symulator, a następnie uruchom. Wszystko będzie dobrze ...

Powiązane problemy