Mam UIImageView, a celem jest proporcjonalne zmniejszenie jego skali poprzez podanie jej wysokości lub szerokości.
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;
Rozmiar obrazu został zmieniony, ale pozycja nie znajduje się w lewym górnym rogu. Jakie jest najlepsze podejście do skalowania obrazu / obrazu i jak poprawić pozycję?
objective-c
cocoa-touch
Ronnie Liew
źródło
źródło
Odpowiedzi:
Naprawiono łatwo, gdy znalazłem dokumentację!
źródło
ScaleAspectFit
jest terazenum UIViewContentMode
, więc ustawiłeśimageView.contentMode = UIViewContentMode.ScaleAspectFit
. Zanotuj okres.translatesAutoresizingMaskIntoConstraints
nie powinien być ustawiony nafalse
. Zajęło mi dużo czasu, zanim zdałem sobie sprawę, że ta właściwość uniemożliwia zmianę rozmiaruWidziałem trochę dyskusji na temat typów skalowania, dlatego postanowiłem przygotować artykuł dotyczący niektórych najpopularniejszych rodzajów skalowania w trybie zawartości .
Powiązany obraz jest tutaj:
źródło
Właśnie próbowałem tego, a UIImage nie obsługuje _imageScaledToSize.
W końcu dodałem metodę do UIImage przy użyciu kategorii - sugestię znalazłem na forach Apple Dev.
W całym projekcie .h -
Realizacja:
źródło
UIGraphicsBeginImageContext(targetSize);
zrobić, jeśli([UIScreen instancesRespondToSelector:@selector(scale)]) { UIGraphicsBeginImageContextWithOptions(targetSize, NO, 0.0f); } else { UIGraphicsBeginImageContext(targetSize); }
ma obsługiwać wyświetlacze siatkówki bez powodowania rozmyciaźródło
Możesz spróbować
imageView
dopasować rozmiar doimage
. Poniższy kod nie jest testowany.źródło
w ten sposób można zmienić rozmiar UIImage
źródło
Oryginalny kod opublikowany na górze działał dla mnie dobrze w iOS 4.2.
Odkryłem, że utworzenie CGRect i określenie wszystkich wartości górnej, lewej, szerokości i wysokości było najłatwiejszym sposobem dostosowania pozycji w moim przypadku, który wykorzystywał UIImageView w komórce tabeli. (Nadal trzeba dodać kod, aby zwolnić obiekty)
źródło
Ustaw ImageView, wybierając Tryb
Aspect Fill
i zaznaczającClip Subviews
pole.źródło
To działa dobrze dla mnie Swift 2.x:
źródło
Ustaw
UIimageview
według skali .........źródło
Dla Swift:
źródło
UIImageView + Scale.h:
UIImageView + Scale.m:
źródło
Użyłem następującego kodu. Gdzie imageCoverView to UIView zawiera UIImageView
źródło
Jeśli zaproponowane tutaj rozwiązania nie działają, a Twoim zasobem obrazu jest w rzeczywistości plik PDF, zauważ, że XCode tak naprawdę traktuje pliki PDF inaczej niż pliki obrazów. W szczególności nie wydaje się być w stanie skalować, aby poprawnie wypełnić plik PDF: zamiast tego kończy się kafelkami. Doprowadzało mnie to do szału, dopóki nie zorientowałem się, że chodziło o format PDF. Konwertuj na JPG i powinieneś być gotowy.
źródło
Zwykle używam tej metody do moich aplikacji ( kompatybilnych z Swift 2.x ):
źródło
Myślę, że możesz zrobić coś takiego
źródło
Oto, jak możesz łatwo to skalować.
Działa to w wersji 2.x z symulatorem i telefonem iPhone.
źródło