Benutzerdefinierter Hintergrund des Interface Builder (iPhone dev) Das Bild berücksichtigt die Stretching-Einstellungen nicht

8

Ich versuche, eine benutzerdefinierte Schaltfläche mithilfe eines Hintergrundbilds in Interface Builder zu erstellen. Das Bild hat dehnbare und nicht dehnbare Teile, so dass es in der Größe verändert werden kann.

IB macht die Stretching-Eigenschaften verfügbar, um dies zu ermöglichen, aber keine Werte, die ich einfüge, beeinflussen die Darstellung der Schaltfläche. Es wird immer vollständig gestreckt, um die Größe des Rahmens zu füllen.

Ist das vielleicht eine nicht unterstützte Funktion in IB oder in UIButton?

Ссылка

(Hinweis: Die obigen Stretch-Werte sind nicht die, die mit dem Bild richtig funktionieren, sondern nur die Werte, mit denen ich zum Zeitpunkt des Screenshots herumhantierte)

    
David Whatley 03.01.2010, 23:59
quelle

5 Antworten

2

Im Beispiel in iPhone 3-Entwicklung beginnen werden nur die UIImage leftCapWidth und topCapHeight verwendet und das Bild wird programmgesteuert erstellt / gesetzt. Das ist eine alternative Methode, wenn contentStretch nicht funktioniert.

    
Nimrod 04.01.2010, 02:16
quelle
0

In Fällen, in denen mehr als ein Pixel gestreckt werden soll (dh ein Muster in der Mitte der Schaltfläche), funktioniert das dehnbare UIImage nicht.

Der contentStretch des UIButton funktioniert auch nicht richtig.

Wie ich es gelöst habe: Ich habe UIButton subclassiert und eine Eigenschaft UIImageView *backgroundImageView als Eigenschaft hinzugefügt und sie als Subview innerhalb des UIButton auf Index 0 gesetzt. Ich stelle dann in layoutSubviews sicher, dass es vollständig auf die Schaltfläche passt und lege die hervorgehobenen Zustände der imageView fest. Alles, was Sie tun müssen, ist eine UIImageView mit dem richtigen ContentStretch und ContentMode übergeben.

.h-Datei

%Vor%

.m-Datei

%Vor%     
FelixLam 03.11.2010 10:38
quelle
0

Das Hintergrundbild der Schaltfläche wird immer angepasst, um den Rahmen zu füllen. Das Vordergrundbild wird nicht in der Größe geändert (wenn kein Text vorhanden ist, wird er zentriert). Die Logik der Dehnung ist, dass sie die Größe ändert, während die Grenzen intakt bleiben; Für ein abgerundetes Rechteck bedeutet dies beispielsweise, dass die abgerundeten Ecken nicht verzerrt sind.

    
18446744073709551615 25.11.2011 08:01
quelle
0

Verwenden Sie die Xcode-Slicing-Funktion, um die Abmessungen eines in der Größe veränderbaren mittleren Bereichs des Bilds anzugeben und optional Endkappen zu definieren, die Bereiche des Bildes sind, die nicht vom veränderbaren Bereich ausgefüllt werden sollen. Siehe Info Asset-Kataloge

    
backslash112 07.02.2015 02:13
quelle
-1

Ich habe es funktioniert !!! Die magischen Werte für mich sind 0,2 und 0,2.

Mein Bild ist eine Box in einer Box, beide mit runden Ecken.

Wenn es 0,2 und 0,8 ist, bleibt das obere Bild ungedehnt, aber das untere Bild ist gestreckt und verzerrt.

Ich denke, die erste 0.2 ist der Versatz, was bedeutet, dass man sich nicht dehnen muss, und der zweite ist wahrscheinlich, wie viel man dehnen kann. Mindestens funktionieren 0,2 und 0,6 auch.

Im Prinzip können Sie ein Experiment machen: Nehmen Sie ein Bild von einem Gitter oder konzentrischen Kreisen oder einem Farbverlauf und strecken Sie es. Wenn Sie dies tun, posten Sie bitte das Bild :).

    
18446744073709551615 19.08.2011 12:33
quelle