Ich habe eine Bildansicht, die programmgesteuert deklariert wurde, und ich setze ihr Bild auch programmgesteuert.
Ich kann das Bild jedoch nicht so einstellen, dass es sowohl zum Aspekt passt als auch die Mitte an der Bildansicht ausrichtet.
Mit anderen Worten, ich möchte, dass das Bild:
- Skalieren Sie, um dem Aspekt zu entsprechen, wenn das Bild groß ist.
- Zentrieren, aber nicht vergrößern, wenn das Bild klein ist.
Wie bekomme ich das?
ios
objective-c
uiimageview
uiimage
Ravi Vooda
quelle
quelle
Antworten:
Einfach die Lösung einfügen:
Genau wie @manohar sagte
löste mein Problem
quelle
CGRectContainsRect(imageView.bounds, {CGPointZero, image.size})
CGSize imageSize = ((UIImage*)imagesArray[i]).size;
,CGSize viewSize = imageView.bounds.size
,if (viewSize.width > imageSize.width && viewSize.height > imageSize.height) {
.In der schnellen Sprache können wir den Inhaltsmodus der UIImage-Ansicht wie folgt einstellen:
quelle
Schnell
Sie können die folgenden Optionen verwenden, um Ihr Bild zu positionieren:
scaleToFill
scaleAspectFit
// Inhalt skaliert, um mit festem Aspekt zu passen. Der Rest ist transparentredraw
// bei Grenzänderungen neu zeichnen (ruft -setNeedsDisplay auf)center
// Inhalt bleibt gleich groß. positioniert eingestellt.top
bottom
left
right
topLeft
topRight
bottomLeft
bottomRight
quelle
Antwort aktualisiert
Als ich diese Frage ursprünglich im Jahr 2014 beantwortete, war es nicht erforderlich, das Bild bei einem kleinen Bild nicht zu vergrößern. (Die Frage wurde 2015 bearbeitet .) Wenn Sie eine solche Anforderung haben, müssen Sie tatsächlich die Größe des Bildes mit der der imageView vergleichen und entweder
UIViewContentModeCenter
(im Fall eines Bildes, das kleiner als die imageView ist) oderUIViewContentModeScaleAspectFit
in allen anderen Fällen verwenden .Ursprüngliche Antwort
Es hat mir gereicht, den contentMode von imageView auf
UIViewContentModeScaleAspectFit
zu setzen. Es scheint auch die Bilder zu zentrieren. Ich bin mir nicht sicher, warum andere Logik verwenden, die auf dem Bild basiert. Siehe auch diese Frage: iOS-Aspekt passt und zentriertquelle
Ich habe dieses Problem so gelöst.
UIImageView
(mitUIViewContentModeScaleAspectFit
)(CGSize imageSize = imageView.image.size)
UIImageView
Größe ändern.[imageView sizeThatFits:imageSize]
Ich wollte UIView in die obere Mitte von setzen
UICollectionViewCell
. Also habe ich diese Funktion benutzt.Für mich geht das.
quelle
Diese Unterklasse verwendet die Mitte, wenn das Bild nicht größer als die Ansicht ist, andernfalls wird es verkleinert. Ich fand das nützlich für eine
UIImageView
, die die Größe ändert.Das angezeigte Bild ist kleiner als die Ansicht für große Größen, aber größer als die Ansicht für kleine Größen. Ich möchte, dass es nur verkleinert, aber nicht vergrößert wird.
quelle
Sie können dies erreichen, indem Sie den Inhaltsmodus der Bildansicht auf UIViewContentModeScaleAspectFill setzen.
Verwenden Sie dann die folgende Methode, um das Uiimage-Objekt mit geänderter Größe abzurufen.
Hier bearbeitet (Swift Version)
quelle
quelle
quelle
Für Leute, die nach UIImage-Größenänderung suchen,
quelle