Festlegen von UIIMaße im UITableViewCell-Bild

7

Ich habe einen Standard UITableViewCell , wo ich die Text- und Bildeigenschaften verwende, um favicon.ico und ein Label anzuzeigen. In den meisten Fällen funktioniert das sehr gut, da UIImage das ICO-Format unterstützt. Allerdings haben einige Websites (wie Amazon.com ) favicon.ico s, die die Speichermöglichkeiten des ICO-Formats nutzen mehrere Größen in der gleichen Datei. Amazon speichert vier verschiedene Größen, bis zu 48x48.

Dies führt dazu, dass die meisten Bilder 16x16 sind, außer ein paar, die bei 32x32 oder 48x48 erscheinen und alles schrecklich aussehen lassen. Ich habe hier das offizielle Forum, die Dokumentation und anderswo erfolglos gesucht. Ich habe alles versucht, was mir einfällt, um die Bildgröße zu beschränken. Das einzige, was funktionierte, war eine undokumentierte Methode, die ich nicht verwenden werde. Dies ist meine erste App und meine erste Erfahrung mit Cocoa (kam von C #).

Falls ich nicht genau wusste, wonach ich suche, würde der Ratschlag im Idealfall darin bestehen, die Dimensionen von UIImage so zu setzen, dass die 48x48-Version auf 16x16 verkleinert wird oder eine Methode, um UIImage anzuzeigen. die in der ICO-Datei vorhandene 16x16-Version zu verwenden. Ich brauche nicht unbedingt Code: nur ein Vorschlag für einen Ansatz würde mir gut tun.

Hat jemand irgendwelche Vorschläge? (Ich fragte im offiziellen Forum auch , weil ich schon mehr als einen Tag in diese versenkt habe Lösung wird dort veröffentlicht, ich werde es auch hier setzen.)

    
bbrown 02.06.2009, 20:04
quelle

6 Antworten

23

Hier ist, was Benutzer "bcd" in den offiziellen Foren gepostet , die zur Lösung des Problems (mit einem geringfügige Modifikation von mir selbst, um es für die Aufnahme in eine Reihe von Hilfsmethoden statisch zu machen):

%Vor%     
bbrown 02.06.2009, 21:15
quelle
4

Ich mache etwas ähnliches in meiner App.

%Vor%

Erstellen Sie anschließend ein neues Bild, das die Proportionen einschränkt. Ersetzen Sie "Bild" durch die ICO-Datei, die Sie von Amazon erhalten.

%Vor%     
Brandon Schlenker 02.06.2009 20:55
quelle
1

Ich habe noch nicht genug Karma, um die Antworten zu kommentieren, aber ich hatte einen guten Erfolg mit dem obigen bbrandons-Code.

Ich habe eine ganze Reihe von Warnungen auf der Konsole bekommen, obwohl die Anzahl der Bytes pro Zeile nicht hoch genug ist - nachdem ich die Antworten darauf gelesen habe post Ich habe es am Ende auf 0 gesetzt, damit das System den richtigen Wert bestimmen kann.

zB:

%Vor%     
crafterm 21.03.2010 05:49
quelle
1

Hier ist, wie ich es gemacht habe. Diese Technik sorgt dafür, dass Text- und Detailtextetiketten entsprechend nach links verschoben werden:

%Vor%     
Chris 21.04.2011 06:17
quelle
0

Ich weiß nichts darüber, wie Ico-Dateien funktionieren, also ist es vielleicht möglich, das 16x16-Bild bequem zu extrahieren und zu verwenden, aber ich habe keine Ahnung, wie.

Soweit mir bekannt ist, ist es nicht möglich, in einem generischen UITableViewCell nützliche Eigenschaften für das Bild festzulegen. Der einfachste Weg (immer noch unordentlich, vor allem wenn Sie neu sind), alles auf 16x16 zu skalieren, wäre die Unterklasse UITableViewCell , geben Sie eine UIImageView , immer die Bildansicht auf 16x16 und setzen Sie den contentMode auf UIViewContentModeAspectFit .

    
zem 02.06.2009 20:43
quelle
0

Ich habe die Personenkategorie anderer geändert, damit alle Bilder die gleiche Breite (sichtbare Breite) einnehmen, OHNE SKALIERUNG:

%Vor%     
LolaRun 27.04.2012 18:28
quelle