2013-03-14 6 views
5

frage mich, ich individuell auf die UIBarButtonItems die folgende Art und WeiseWie iOS ein Farbverlauf auf UIBarButtonItem-Bild festlegen?

+ (UIBarButtonItem *)createBarButtonItemWithTitle:(NSString *)t target:(id)tgt action:(SEL)a 
{ 
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    UIImage *buttonImage = [[UIImage imageNamed:@"blabla.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 10, 0, 10)]; 


    CGRect buttonFrame = [button frame]; 
    buttonFrame.size.width = 35; 
    buttonFrame.size.height = buttonImage.size.height; 
    [button setFrame:buttonFrame]; 

    [button setBackgroundImage:buttonImage forState:UIControlStateNormal]; 

    [button addTarget:tgt action:a forControlEvents:UIControlEventTouchUpInside]; 

    UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] initWithCustomView:button]; 

    return buttonItem ; 
} 

Aber jetzt, ich habe nicht die Schattierung/Glanzeffekt auf die Schaltfläche Hintergrundbild ....

Gibt es eine Möglichkeit zu habe es automatisch gemacht, oder muss ich es programmatisch machen?

EDIT: Here is a capture, I used a simple green square to make it more obvious. There's no more shading/glossy effect

+0

Bitte teilen Sie einen Screenshot des Standard 'UIBarButtonItem', wo Sie es nicht nur mit einem Bild tun können. –

+0

ok, wie mit dem Bild gezeigt, keine Schattierung/Glanz mehr. Es ist wahrscheinlich das normale Verhalten, ich frage mich nur, ob ich iOS dazu bringen kann, es automatisch zu machen ... – Alex

+0

Wie ich sehe, haben Standardtasten die gleiche Höhe, beachten Sie, wie Glanzeffekt aussieht - es ist immer horizontal (so weit ich mich erinnern kann)). In diesem Fall sollten Sie den Glanzeffekt am Bild hinzufügen und ohne Qualitätsverlust skalieren lassen (mit Einfügungen für die Rand- und Eckbereiche). Funktioniert schnell, sieht gut aus, ich sehe keine Notwendigkeit, einen speziellen Code dafür zu verwenden oder sogar zu machen. –

Antwort

0

total Um die Bar-Taste so anpassen Sie etwas anderes als das flache grüne Bild in „blabla.png“ zur Verfügung zu stellen bräuchten.

Eine andere Möglichkeit, dies zu umgehen, wäre, eine umrandete Stilschaltfläche mit Ihrem Bild zu erstellen. Etwas wie:

UIBarButtonItem* barButton = [UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"blabla.png"] style:UIBarButtonItemStyleBordered target:tgt selector:a]; 

Der UIBarButtonItemStyleBordered Stil gibt es die 3D-Taste-y-Look angehoben. Sie können das Aussehen auf Wunsch an Ihren Balken anpassen.

+0

Danke für den Tipp. Leider instanziiere ich einen Button, nicht einen UIBarButton, so dass dies eine böse Warnung erzeugt. – Alex

+0

Nun, ich denke ich vermisse etwas. Ihr UIButton ist nur ein grünes Bild. Dann sieht es so aus, als ob Sie daraus ein UIBarButtonItem erstellen. Überspringen Sie einfach die UIButton und arbeiten Sie mit dem UIBarButtonItem. –

+0

nicht wirklich, verwende ich die UIButton, um den UIBarButton mit dieser benutzerdefinierten UIView zu initialisieren. Dies sorgt für die Bildausdehnung, Anpassung in Abhängigkeit von der Textlänge etc ... Ansonsten gibt es keine Methode, um ein Bild und variable Textlänge gleichzeitig auf einem UIBarButtonItem korrekt zuzuweisen (zumindest keine, die ich kenne) – Alex