Ich habe ein UIImageView und das Ziel ist es, es proportional zu verkleinern, indem ich ihm entweder eine Höhe oder eine Breite gebe.
UIImage *image = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://farm4.static.flickr.com/3092/2915896504_a88b69c9de.jpg"]]];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
//Add image view
[self.view addSubview:imageView];
//set contentMode to scale aspect to fit
imageView.contentMode = UIViewContentModeScaleAspectFit;
//change width of frame
CGRect frame = imageView.frame;
frame.size.width = 100;
imageView.frame = frame;
Die Bildgröße wurde geändert, aber die Position befindet sich nicht oben links. Was ist der beste Ansatz zum Skalieren von Bild / Bildansicht und wie korrigiere ich die Position?
objective-c
cocoa-touch
Ronnie Liew
quelle
quelle
Antworten:
Einfach behoben, sobald ich die Dokumentation gefunden habe!
quelle
ScaleAspectFit
ist jetzt einenum UIViewContentMode
, also würden Sie einstellenimageView.contentMode = UIViewContentMode.ScaleAspectFit
. Beachten Sie den Zeitraum.translatesAutoresizingMaskIntoConstraints
sollte nicht eingestellt werdenfalse
. Es hat lange gedauert, bis mir klar wurde, dass diese Eigenschaft die Größenänderung verhindertIch habe einige Gespräche über Skalierungstypen geführt, daher habe ich beschlossen, einen Artikel über einige der beliebtesten Skalierungstypen im Inhaltsmodus zusammenzustellen .
Das zugehörige Bild ist hier:
quelle
Ich habe es gerade versucht und UIImage unterstützt _imageScaledToSize nicht.
Am Ende habe ich UIImage mithilfe einer Kategorie eine Methode hinzugefügt - ein Vorschlag, den ich in den Apple Dev-Foren gefunden habe.
In einer projektweiten .h -
Implementierung:
quelle
UIGraphicsBeginImageContext(targetSize);
tun, wenn([UIScreen instancesRespondToSelector:@selector(scale)]) { UIGraphicsBeginImageContextWithOptions(targetSize, NO, 0.0f); } else { UIGraphicsBeginImageContext(targetSize); }
Retina-Displays zu unterstützen, ohne es verschwommen zu machenquelle
Sie können versuchen, die
imageView
Größe an die anzupassenimage
. Der folgende Code wird nicht getestet.quelle
Auf diese Weise kann die Größe eines UIImage geändert werden
quelle
Der oben veröffentlichte Originalcode hat in iOS 4.2 für mich gut funktioniert.
Ich fand, dass das Erstellen eines CGRect und das Angeben aller Werte für oben, links, Breite und Höhe in meinem Fall, in dem eine UIImageView in einer Tabellenzelle verwendet wurde, die einfachste Möglichkeit war, die Position anzupassen. (Es muss noch Code hinzugefügt werden, um Objekte freizugeben.)
quelle
Stellen Sie Ihre ImageView ein, indem Sie Modus auf auswählen
Aspect Fill
und das Kontrollkästchen aktivierenClip Subviews
.quelle
Das funktioniert gut für mich Swift 2.x:
quelle
Stellen Sie Ihre
UIimageview
nach Skala ein .........quelle
Für Swift:
quelle
UIImageView + Scale.h:
UIImageView + Scale.m:
quelle
Ich habe folgenden Code verwendet. Wo imageCoverView ist, enthält UIView UIImageView
quelle
Wenn die hier vorgeschlagenen Lösungen für Sie nicht funktionieren und Ihr Bildbestandteil tatsächlich ein PDF ist, beachten Sie, dass XCode PDFs tatsächlich anders behandelt als Bilddateien. Insbesondere scheint es nicht skalierbar zu sein, um es richtig mit einem PDF zu füllen: Es wird stattdessen gekachelt. Das machte mich verrückt, bis ich herausfand, dass das Problem das PDF-Format war. Konvertieren Sie in JPG und Sie sollten bereit sein zu gehen.
quelle
Normalerweise verwende ich diese Methode für meine Apps ( Swift 2.x- kompatibel):
quelle
Ich denke du kannst so etwas machen
quelle
So können Sie es einfach skalieren.
Dies funktioniert in 2.x mit dem Simulator und dem iPhone.
quelle