2013-03-22 1 views
13

Ho impostato la comparsa di UISegmentedControl usando il codice seguente,come ripristinare l'aspetto predefinito di 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]; 

ed ho ottenuto l'uscita perfetta enter image description here

ma ora voglio impostare l'aspetto predefinito di UISegment come enter image description here

quindi cosa devo fare ???

+0

@BillWoodger Stavo solo implementando questo codice, ho fatto un cambiamento che ho trovato praticamente ed era chiaramente visibile nel codice. Sembra che si tratti di un errore di copia-incolla. So che tutti quelli che cercheranno di utilizzare questo codice troveranno l'errore, ma stavo solo cercando di salvare il tempo degli altri :-) –

+0

@BillWoodger hai ragione. Avrei dovuto menzionare il problema nel commento qui. Le immagini sbagliate vengono assegnate alle variabili 'segmentSelected' e' segmentUnselected' sopra. –

+0

@AdilMalik Puoi sempre aggiungerlo come risposta. Le risposte sono più visibili dei commenti. Se modifichi la domanda, potresti confondere i futuri lettori che si chiedono perché le risposte non riflettano la domanda (non necessariamente in questo esempio). Ti suggerisco di aggiungere una risposta, quindi possiamo eliminare tutti questi commenti per mantenere le cose in ordine. –

risposta

14

mettere questo codice sul viewcontroller che si desidera con il controller di default

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

questo è esattamente quello che dico .... – wasim

+0

dove è @ tosa ?? –

+0

@WasimMalek: andato. –

2

rimuovere il codice per le immagini che sono state assegnate.

+0

ma voglio usare il segmento predefinito per una sola visualizzazione, e per gli altri voglio segmento personalizzato ,, ho restituito questo codice in rootviewcontroller di app, quindi come ricaricare l'aspetto del segmento predefinito? –

+0

per altre visualizzazioni lascia il codice così com'è. Per la visualizzazione con il segmento predefinito è possibile utilizzare il generatore di interfacce o aggiungere il segmento predefinito per codice. –

+0

ho provato questo nel generatore di interfacce il suo segmento predefinito, ma quando eseguo l'app mi mostra il vecchio segmento di aspetto che ho impostato in anticipo .. :( –

4

set ImageName a zero sul codice di cui sopra e metterlo sulla vista in cui si desidera comportamento predefinito

2

Impostare l'immagine del segmento controller a zero. Quindi, una volta pulito il simulatore, quindi esegui. Andrà tutto bene ...