Ich schreibe meine erste iOS-App für die iOS 5.0 + Plattform. Ich verwende das Protokoll UIAppearance
, um die Benutzeroberfläche der Anwendungen anzupassen.UIImage resizableImageWithCapInsets: funktioniert nicht wie erwartet
Ich versuche, die Hintergründe für UIBarButtonItem
über die gesamte Anwendung zu ändern. Aufgrund der Tatsache, dass meine UIBarButtonItem
's Größe je nach dem verwendeten Text oder Symbol ändern kann, versuche ich UIImage resizableImageWithCapInsets:
mit meinem Hintergrund png zu verwenden.
Ich fand ursprünglich den Code, den ich benötigte Ray Wenderlich. Mit genau dem gleichen Code und einem Bild, das dem im oben genannten Tutorial ähnelt, bekomme ich seltsame Ergebnisse. Vielleicht ist es nur meine Unerfahrenheit mit Cocoa Touch.
Hier ist der Code, den ich verwende.
DreamsAppDelegate.m - customizeAppearance:
UIImage *btnBg = [[UIImage imageNamed:@"navBarButton-bg"]
resizableImageWithCapInsets:UIEdgeInsetsMake(0, 6, 0, 6)];
[[UIBarButtonItem appearance] setBackgroundImage:btnBg
forState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];
Hier ist die png Hintergrundbild I
Und hier ist das Ergebnis (im Simulator) zu verwenden, ich versuche,
Vielen Dank für Ihre Antwort. Das Bild ist @ 2x gepostet. Also sollte ich mir Messungen auf (0, 3, 0, 3) schneiden lassen? Du sagst, ich sollte die Mitte meines Bildes 1 Pixel breit machen? Ich verstehe, warum das so wäre, aber das Tutorial, dem ich folgte, hatte ein Bild mit 30px mal 40px, mit dem gleichen Stil-Verlauf wie ich und es scheint fantastisch zu funktionieren (mit dem UIEdgeInsetsMake, den ich gerade benutze, nur um ein Pixel angepasst) wegen meiner Eckenradien). –
Hier ist der Trick: Sie können oben und unten 0 verwenden, wenn Ihr Hintergrundbild die gleiche Höhe wie eine Navigationsleiste hat.Es füllt nur diesen Raum mit Ihrem vorhandenen Farbverlauf. Ihr Bild ist nicht die Höhe einer Retina-Navigationsschaltfläche, daher wird es entweder gedehnt oder wiederholt, um diese Höhe zu füllen. Sie müssen eine obere und untere Cap-Größe angeben (das erste und das dritte Argument). Beginnen Sie mit '(7, 3, 7, 3)'. Dies wird einige Streifen hinterlassen, aber hoffentlich geben Sie eine klarere Vorstellung von dem, was vor sich geht. – Dondragmer
Ahh das macht ein bisschen mehr Sinn. Wie groß ist die Größe einer Netzhaut-Navigationsleiste? Ich schneide meine UI-Elemente aus einer PSD-Datei in Retina-Größe. Wenn ich also die navBar-Schaltfläche in der PSD-Datei größer machen und sie exportieren muss, um das zu bekommen, was ich brauche, wird es mir leicht fallen. –