Die beste und saubere Lösung verwenden, ist es nur mit der Höhe der Zelle spielen, lassen die Bild wird automatisch von Autolayout angepasst.
Es ist einfach:
in Ihrer Zelle, ein UIImageView
hinzuzufügen und die Größe, die Sie haben wollen, auf, wenn die Zelle die tatsächliche Höhe hat;
Set als Einschränkungen dieser UIImageView
mindestens oben, unten und einer der seitlichen Rand (rechts oder links); Stellen Sie auch die Einschränkungen ein, um die Proportion Breite/Höhe zu halten;
An diesem Punkt, wenn die Zelle wachsen, wächst das Bild in der Höhe, und den Anteil (dank constraint) zu halten, es ist, die Breite als auch die Größe verändert, ALWAYS die korrekten aufweisen und proportionierte Größe.
Und nun müssen Sie nur noch den Code für die Höhe der Zelle schreiben:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
static CGFloat cellDefaultHeight = /*the default height of the cell*/;
static CGFloat screenDefaultHeight = /*the default height of the screen i.e. 480 in iPhone 4*/;
CGFloat factor = cellDefaultHeight/screenDefaultHeight
return factor * [UIScreen mainScreen].bounds.size.height;
}
Offensichtlich die contentMode
des UIImageView
-AspectFill
gesetzt.
Warum? Der Punkt auf einem größeren Bildschirm ist es, mehr Informationen auf dem Bildschirm anzeigen zu können. Von dem, was du beschreibst, warum solltest du die größeren Bildschirme unterstützen, wenn du nur die gleiche Menge an Informationen zeigst, nur größer? – rmaddy
Ich weiß nicht, wie man das Bild unter Beibehaltung des gleichen Seitenverhältnisses skaliert. Das ist eigentlich meine Frage. – igrrik