Próbuję narysować kilka miniatur o stałym rozmiarze (100x100) za pomocą UIImageView
. Mam ustawić rozmiar ramki obrazu moim zdaniem być 100x100 i ustaw contentMode
się UIViewContentModeScaleAspectFill
.
Rozumiem, że powinno to spowodować, że obraz zostanie narysowany w ustawionym przeze mnie rozmiarze, a obraz wypełni obszar obrazu i przycina wszystkie części obrazu, które wykraczają poza rozmiar, który ustawiłem dla widoku obrazu. Jednak obraz jest nadal większy lub mniejszy niż rozmiar 100x100, który dla niego ustawiłem.
Jeżeli ustawić contentMode
się UIviewContentModeScaleToFill
, a następnie obraz jest rysowany dokładnie 100x100, ale jest zniekształcony, aby pasowały do tych wymiarów. Jakieś pomysły, dlaczego wypełnienie aspektu nie jest przycinane zgodnie z oczekiwaniami?
Oto mój kod:
_photoView = [[UIImageView alloc] initWithImage:photoImage];
_photoView.contentMode = UIViewContentModeScaleAspectFill;
[self addSubview:_photoView];
CGRect photoFrame = _photoView.frame;
photoFrame.size = CGSizeMake(100, 100);
_photoView.frame = photoFrame;
Aby lepiej zilustrować, oto zrzut ekranu tego, co widzę. Zielone kwadraty UIView
zawierają elementy, z UIImageView
którymi pracuję. Ustawiłem ich kolor tła na zielony, a ramkę widoku na 100x100. W teście, UIImageViews
mają wymiary 50x50. Jak widać, w przypadku korzystania z ...AspectFill
obrazu obrazy nie mają rozmiaru 50x50, a w niektórych przypadkach są przesunięte w stosunku do tego, co chciałbym. Podczas używania ...ScaleToFill
mają prawidłowe rozmiary, ale obraz jest zniekształcony.