Mam widok obrazu zadeklarowany programowo i ustawiam jego obraz również programowo.
Jednak nie jestem w stanie ustawić obrazu tak, aby pasował do aspektu i wyrównał środek do widoku obrazu.
Innymi słowy, chcę, aby obraz:
- Skaluj w dół, aby dopasować do formatu, jeśli obraz jest duży.
- Wyśrodkuj, ale nie skaluj w górę, jeśli obraz jest mały.
Jak mogę to zdobyć?
ios
objective-c
uiimageview
uiimage
Ravi Vooda
źródło
źródło
Odpowiedzi:
Wklejanie rozwiązania:
Tak jak powiedział @manohar
rozwiązał mój problem
źródło
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) {
.W szybkim języku możemy ustawić tryb zawartości widoku UIImage w następujący sposób:
źródło
Szybki
Do pozycjonowania obrazu możesz użyć następujących opcji:
scaleToFill
scaleAspectFit
// zawartość skalowana w celu dopasowania do stałego aspektu. reszta jest przezroczystaredraw
// przerysuj przy zmianie granic (połączenia -setNeedsDisplay)center
// zawartość pozostaje tego samego rozmiaru. ustawiony skorygowany.top
bottom
left
right
topLeft
topRight
bottomLeft
bottomRight
źródło
Zaktualizowana odpowiedź
Kiedy pierwotnie odpowiedziałem na to pytanie w 2014 r., Nie było wymogu, aby nie skalować obrazu w przypadku małego obrazu. (Pytanie zostało zredagowane w 2015 r .) Jeśli masz takie wymaganie, rzeczywiście musisz porównać rozmiar obrazu z rozmiarem imageView i użyć albo
UIViewContentModeCenter
(w przypadku obrazu mniejszego niż imageView) lubUIViewContentModeScaleAspectFit
we wszystkich innych przypadkach .Oryginalna odpowiedź
Ustawienie contentMode dla imageView
UIViewContentModeScaleAspectFit
było dla mnie wystarczające. Wydaje się również, że obrazy są w środku. Nie jestem pewien, dlaczego inni używają logiki opartej na obrazie. Zobacz także to pytanie: dopasowanie i wyśrodkowanie w systemie iOSźródło
Tak rozwiązałem ten problem.
UIImageView
(zUIViewContentModeScaleAspectFit
)(CGSize imageSize = imageView.image.size)
UIImageView
Zmień rozmiar.[imageView sizeThatFits:imageSize]
Chciałem umieścić UIView na najwyższym środku
UICollectionViewCell
. więc użyłem tej funkcji.Mi to pasuje.
źródło
Ta podklasa używa środka, jeśli obraz nie jest większy niż widok, w przeciwnym razie skaluje się. Uważam, że jest to przydatne w przypadku
UIImageView
zmiany rozmiaru.Obraz, który wyświetla, jest mniejszy niż widok dla dużych rozmiarów, ale większy niż widok dla małych rozmiarów. Chcę, żeby to się zmniejszyło, ale nie w górę.
źródło
Można to osiągnąć, ustawiając tryb zawartości widoku obrazu na UIViewContentModeScaleAspectFill.
Następnie użyj następującej metody metody, aby uzyskać obiekt uiimage o zmienionym rozmiarze.
Edytowano tutaj (wersja Swift)
źródło
źródło
źródło
Dla osób szukających zmiany rozmiaru UIImage,
źródło