2013-03-22 17 views
13

Ich habe das Auftreten von UISegmentedControl mit folgendem Code, SetWie setze ich das UISegmentedControl-Erscheinungsbild zurück?

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

und ich bekam den perfekten Ausgang enter image description here

aber jetzt mag ich Standarddarstellung von UISegment wie enter image description here

einstellen

also was muss ich tun ???

+0

@BillWoodger Ich habe gerade diesen Code implementiert, ich habe eine Änderung, was ich praktisch gefunden und es war deutlich im Code sichtbar. Es scheint, es ist ein Kopier-Paste-Fehler. Ich weiß, dass jeder, der versuchen wird, diesen Code zu verwenden, den Fehler finden wird, aber ich habe nur versucht, anderen Zeit zu sparen :-) –

+0

@BillWoodger du hast Recht. Ich hätte das Problem hier nur im Kommentar erwähnen sollen. Die falschen Bilder werden den oben genannten Variablen segmentSelected und segmentUnsected zugewiesen. –

+0

@AdilMalik Sie können es immer als Antwort hinzufügen. Antworten sind sichtbarer als Kommentare. Wenn Sie die Frage bearbeiten, verwirren Sie möglicherweise zukünftige Leser, die sich fragen, warum die Antworten die Frage nicht reflektieren (nicht unbedingt in diesem Beispiel). Ich schlage vor, Sie fügen eine Antwort hinzu, dann können wir alle diese Kommentare löschen, um die Dinge sauber zu halten. –

Antwort

14

setzen diesen Code auf der Viewcontroller, die Sie wollen mit Standard-Controller

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

das ist genau das, was ich sage .... – wasim

+0

wo ist @ Tosa ?? –

+0

@WasimMalek: weg. –

2

entfernen Sie den Code für Bilder, die Sie zugewiesen haben.

+0

aber ich möchte Standard-Segment nur für eine Ansicht verwenden, und für andere Ich möchte benutzerdefinierte Segment ,, Ich habe diesen Code in rootviewcontroller der App zurückgegeben, so wie Standard-Segment-Erscheinungsbild neu zu laden? –

+0

für andere Ansichten lassen Sie den Code so wie er ist. Für die Ansicht mit dem Standardsegment können Sie den Schnittstellen-Builder verwenden oder Standardsegment für Code hinzufügen. –

+0

Ich habe dies in Interface Builder versuchen, zeigen Sie mir Standardsegment, aber wenn ich die App laufen zeigt es mir altes Aussehen Segment, das ich früh eingestellt habe .. :( –

4

Satz Bildname auf Null auf über Code und es auf der Ansicht gebracht, wo Sie das Standardverhalten

2

das Bild des Segments festlegen möchten Controller zu Null. Dann säubere deinen Simulator und renne dann. Es wird gut ....

Verwandte Themen