UIImageView in meinem UITableViewCell änderung der Größe der auf Sie auf
Ich habe einen ziemlich Vanille UITableView in meiner app verwendet, um ein Bild und text in der default - /standard-Weg. Das erste mal eine UITableViewCell beantragt wird, kehre ich es mit einem Platzhalter-image und starten einer asynchronen download der realen Bild. Wenn der download abgeschlossen ist, Ersetze ich die Platzhalter-Bild.
Wenn ein download fehlschlägt, wird der Platzhalter-Bild bleibt. Das anklicken einer solchen Zeile dient in der Regel. Wenn der download erfolgreich war, indem Sie auf eine Zeile mit der gewünschten Bild führt zu der UIImageView erweitert, um die Höhe der Zeile (und die Breite erhöht auf Skala). Die UIImageView nie wieder auf die normale Größe. Crude versucht, das Bild des UIImageView nicht lindern, das Problem der geheimnisvollen Größe.
//from my - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; method
//after boilerplate cell dequeuing code
cell.textLabel.text = [selectedNoun title];
//add placeholder image
UIImage *placeholderImage = [UIImage imageNamed:@"placeholder.png"];
cell.imageView.image = placeholderImage;
[cell.imageView setContentMode:UIViewContentModeScaleAspectFit];
//...
//If the image has been downloaded I set it
cell.imageView.image = iconDownloader.image;
Dies treibt mich Nüsse. Tatsächlich geschieht nur in einer von zwei Tabellen in meiner app, aber nach und vergleichen Sie die line-oder line-ich sehe keinen Unterschied. In der Hoffnung, dass jemand über diesen vor.
Dank!
EDIT: ich habe nicht eine gute Erklärung für meine andere Lösung, als zu sagen, dass die Bilder ab einer bestimmten Größe erscheinen, führen zu diesem Verhalten und die Verwendung der tatsächlichen thumbnails (auch Bilder, die etwas größer als der UIImageView-Rahmen) tritt dieses Verhalten nicht auf.
- Wenn Sie custom UITableViewCell dann stellen Sie sicher, dass Ihre UIImageView ist nicht benannt mit "Bildansicht"
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie custom UITableViewCell dann stellen Sie sicher, dass Ihre UIImageView ist nicht benannt mit "Bildansicht"
Nur Dinge in den Sinn kommen, daß die Wirkung der Größe & Darstellung einer Ansicht in seinem superview sind:
Ändern Sie den frame/bounds/center-Eigenschaften überall? Wo/wie ist die frame-set zunächst?
imageView.autoResizingMask
sollteUIViewAutoResizingNone
imageView.clipsToBounds
sollteYES
EDIT: weitere Vorschläge
Bin ich Aufnahmen im dunklen b/c Ihre geposteten code sieht gut aus und wenn Sie sich gesetzt haben
imageView.clipsToBounds
dass einschränken sollten das gezeichnete Bild derimageView
Rahmen. Hier sind ein paar mehr Dinge zu versuchen:Implementieren
tableView:willDisplayCell:forRowAtIndexPath:
und legen Sie dieimageView
Eigenschaften gibt. WennimageView.frame
ist das problem, das wahrscheinlich nicht beheben.Fügen Sie Ihre eigenen
UIImageView
auf die Zelle konfiguriert, wie Sie es wollen und nicht mit dem eingebautenimageView
Eigenschaft. Wenn das Verhalten der Standard-Zelle, die das problem verursacht, sollte diese Arbeit.EDIT: großes Bild Probleme
Ich weiß nicht genau, wie groß die "wirklich großen Bilder" sind, die Sie derzeit verwenden, aber Sie sind wahrscheinlich das Problem. Aus der
UIImage
docs (Hervorhebung ist von mir):contentMode
passen Sie innerhalb der Grenzen derimageView
und Sie habenclipToBounds
um sicherzustellen, dass dieimageView
nicht zeichnen alles, was außerhalb Ihrer Grenzen unabhängig. Wenn Sie mit einer standard-Zelle (vs custom) dann dieimageView
Rahmen ist für Sie konfiguriert. Sie könnte mehr posten-code zeigt die Zelle, die die Instanziierung, Konfiguration, sowie das Bild heruntergeladen-handler. Es könnte auch etwas sein, was in einemtableView
delegate-Methode. Als beiseite, wenn die heruntergeladenen Bilder sind sehr groß, Sie wahrscheinlich sollte Sie skalieren für die Anzeige, um Ressourcen zu sparen.imageView
für memory Gründen.Diese Antwort hat mir geholfen. Aber ich musste, um sicher zu nennen
[cell layoutSubviews]
in der Methode, die tatsächlich funktioniert die Einstellung wie dieser:Hoffe, dies kann von nutzen für Sie!
Mein Problem war etwas anders, ich hatte eine benutzerdefinierte
UITableViewCell
mit eigenen UIImageView und wenn Zelle verschwand und tauchte wieder auf, das Bild wäre falsch Größe. Mein problem war, dass ich die Einstellungcell.imageView
an einem Ort undcell.thumbnail
(benutzerdefiniertes Bild) in ein anderes, also habe ich alle Verweise aufcell.thumbnail.
Ich hoffe, es hilft jemand in der Zukunft mit ähnlichen Problem.
UIImageView
in einer Zelle wurde nicht genanntimageView
(benannt nachphotoView
) wurde das Problem behoben. Ich vermute, dass standard -imageView
dynamisch geladen und Hinzugefügt, wie die Untersicht wenn Sie Zugriff auf diese Eigenschaft..In diesen Situationen, die ich mit diesem Image loader-framework. Es beinhaltet eine Methode, um ein Platzhalter-Bild Ihrer Wahl, während das herunterladen von Bildern in den hintergrund, und als zusätzlichen Vorteil, es speichert Bilder, die garantiert das gleiche Bild werden nicht immer heruntergeladen werden müssen, zweimal. Seine ein großes Stück Arbeit, die ich gefunden habe, sehr nützlich für die tableview Bild laden.
SDWebImage:
https://github.com/rs/SDWebImage
Ich hatte das gleiche problem, und ich wollte nicht herausfinden, der Grund für, die. Trotzdem, es ist etwas im Zusammenhang mit der Platzhalter-Bild: laden Sie ein Bild von der gleichen Größe, die die Platzhalter, keine Skalierung durchgeführt werden, aber wenn die Größen nicht übereinstimmen, wird das geladene Bild wird in der Größe verändert werden, um die Platzhalter Abmessungen und in der Größe wieder, wenn geklickt wird.
Also, wenn Sie wollen, um das problem zu vermeiden, verwenden Sie einen Platzhalter, entspricht der Zeilenhöhe.
gehen Sie folgendermaßen vor:
Dies ist ziemlich unwahrscheinlich, aber Sie sollten versuchen, zu schauen, was passiert mit den Bildern der UITableViewCell ' s Untersichten, wenn seine
isSelected
Eigenschaft wechselt vonNO
zuYES
(I. e. was passiert, wenn Sie Tippen Sie auf eine Zelle). Ich bezweifle, dass wird viel helfen, aber es ist lohnt ein Blick in die (wenn Sie was finden...das ist alles unter der Haube von UITableViewCell würde ich mir vorstellen).Sollten Sie auch einen Blick in die Bildansicht ist
clipsToBounds
Eigenschaft. Vielleicht hat das etwas damit zu tun?etwas wie
wenn die Einstellung image behebt das problem für mich
Wenn Sie der tableview neu laden, wenn es geladen ist, das Bild bekommt die Größe, es war wohl zu haben