Interface Builder (iPhone dev) custom-Taste Hintergrundbild nicht respektieren Stretching-Einstellungen
Ich bin versucht, zu erstellen eine benutzerdefinierte Schaltfläche mit einem hintergrund-Bild im Interface Builder. Das Bild hat dehnbare und nicht dehnbare Teile, so dass es geändert werden kann.
IB stellt die Dehnung Eigenschaften um dies zu ermöglichen, doch keine Werte, die ich in beeinflussen, wird die Schaltfläche angezeigt. Es ist immer voll gestreckt zu füllen, die der Größe des Rahmens.
Ist dies eine nicht unterstützte Funktion im IB oder in UIButton vielleicht?
http://img.skitch.com/20100103-rjabkq2c2jkqynw47crxepdtwb.jpg
(Hinweis: Die oben genannten stretch-Werte sind nicht diejenigen, die die Arbeit mit dem Bild, richtig, aber nur die Werte, die ich Durcheinander mit den zum Zeitpunkt des screenshots)
- Gleiche problem mit der gleichen sample-Dateien aus UICatalog. Irgendwelche Fortschritte? Hatten Sie, um es in code?
Du musst angemeldet sein, um einen Kommentar abzugeben.
In dem Beispiel in Beginning iPhone 3 Entwicklung nur die UIImage leftCapWidth und topCapHeight verwendet werden, und das Bild wird erstellt/programmgesteuert festgelegt, so dass eine Alternative Methode, wenn contentStretch nicht funktioniert.
In Fällen, In denen Sie möchten, dass mehr als ein pixel zu Strecken (dh. ein Muster in der Mitte der Taste), die dehnbar UIImage funktioniert nicht.
Den UIButton ist contentStretch hat auch nicht richtig funktioniert.
Wie ich es gelöst: ich Unterklassen UIButton und fügte hinzu, eine
UIImageView *backgroundImageView
als Eigentum und legte ihn mit dem index 0 als eine Untersicht in dieUIButton
. Ich dann sicher im layoutSubviews, dass es passt Sie die Taste vollständig und legen Sie die markierten Staaten der Bildansicht. Alles, was Sie tun müssen, ist die übergabe einer UIImageView mit dem richtigen contentStretch und contentMode angewendet..h-Datei
.m-Datei
Den button Hintergrundbild wird immer geändert werden, um den Rahmen zu füllen; das Vordergrund-Bild wird nicht verändert (wenn es keinen text, es zentriert ist). Die Logik von stretching ist, dass es die Größe der Mitte, wobei die Grenzen intakt; zum Beispiel für ein Rechteck mit abgerundeten Ecken dies bedeutet, dass die abgerundeten Ecken nicht verzerrt werden.
Verwenden Sie die Xcode-Slicing-Funktion geben Sie die Abmessungen der ein in der Größe veränderbares mittleren Bereich der Bild-und Optional-Endkappen, die Bereiche des Bildes, die nicht ausgefüllt werden sollen, indem der veränderbare Bereich.
Sehen Über Asset-Kataloge
Ich habe es funktioniert!!! Die Magie Werte für mich sind 0,2 und 0,2.
Mein Bild ist eine box innerhalb einer box, die beide mit Runden Ecken.
Wenn es bei 0,2 und 0,8, verlässt es die oben auf dem Bild ungedehnt, aber die untere ist gestreckt und verzerrt.
Ich denke, die erste 0.2 ist der offset Bedeutung, wie viel nicht zu dehnen, und die 2. ist wohl, wie viel zu dehnen. Mindestens 0,2 und 0,6 zu arbeiten.
Im Prinzip können Sie machen ein experiment: nehmen Sie ein Bild von einem Gitter oder in konzentrischen Kreisen oder mit einem Farbverlauf und ziehen Sie es. Wenn Sie das tun, bitte posten Sie das Bild 🙂 .