2012-03-27 17 views
1

Ich versuche, einen kleinen Codeabschnitt in einer benutzerdefinierten Schaltflächenklasse wiederzuverwenden. Damit dies funktioniert, muss ich nicht dehnbare Bilder (ein Symbol) oder ein dehnbares Bild (ein "Swoosh") einreichen. Innerhalb des Codes muss ich das Rect einstellen, um die Höhe zu zeichnen, also möchte ich idealerweise einfach feststellen, ob das Bild dehnbar ist oder nicht? Wenn es nicht ist, zeichne ich es in der Größe des Bildes, wenn nicht, zeichne ich an den Grenzen des enthaltenden rect.Kann festgestellt werden, ob ein UII-Bild dehnbar ist?

Aus meiner bisherigen Untersuchung sind capInsets (iOS 5) oder leftCapWidth/topCapHeight (vor iOS 5) nicht sinnvoll.

Ist etwas im Kern oder Quarz Informationen, die ich verwenden kann vergraben?

Nur neugierig, für jetzt codiere ich es mit einem zusätzlichen Parameter.

** Ich habe seit Lese durch CGImageRef und dem CI Äquivalent **

Soweit ich es sagen kann, ist keine solche Informationen, die wir solche Bilder identifizieren zugreifen können, was die Frage aufwirft, wie das tut OS wissen?

Antwort

1

Es gibt keine Möglichkeit, dies zu erkennen, es sei denn, Sie haben eine intensive Bildanalyse (die nicht 100% korrekt ist). UIImage sind im Wesentlichen einige Pixel mit Meta-Informationen, die alle aus der Datei stammen, aus der Sie sie geladen haben. Kein Dateiformat würde diese Information haben.

Sie können jedoch einige Informationen in den Dateinamen des Bildes codieren. Wenn Sie ein Bild namens foo.png haben, das dehnbar ist, nennen Sie es foo.stretch.png? Ihre Loading-Routinen können den Dateinamen analysieren und Meta-Informationen extrahieren, die Sie dem UIImage zuordnen können (siehe http://labs.vectorform.com/2011/07/objective-c-associated-objects/ für zugehörige Objekte) oder indem Sie eine eigene Klasse erstellen, die einen UIImage mit Meta-Informationen kombiniert.

Viel Glück in Ihrer Forschung.

+0

Ich wurde informiert, dass es in android ist eine Unterklasse von was auch immer ein Bild normalerweise darstellt. Gr. : P Es ist einfach zu codieren, indem Sie in der UIView-Unterklasse, die ich zum Rendern in der Schaltfläche verwende, eine bool dehnbare Eigenschaft festlegen und diese in den Routinen setter und drawRect überprüfen. Es war also ein Problem, das ich bereits technisch gelöst hatte. Ich war nur neugierig. – Diziet

0

Wenn Sie UIImage * erstellen, ist die Eigenschaft .size absolut. Wenn du dehnbar zu deiner Knopfansicht meinst. überprüfen Sie zum Beispiel einfach die Waage.

+0

Das wird nicht für mich arbeiten. Es ist ein Bild, das von dreachableImageWithLeftCapWidth/resizableImageWithCapInsets definiert wird. Also wäre es immer kleiner als das enthaltende Rect. – Diziet

Verwandte Themen