Czy można obracać tylko obraz w UIImageView? Szukam informacji na ten temat, ale znalazłem tylko informację, jak obrócić UIImageVeiw.Obracanie obrazu w UIImageView
Odpowiedz
Można obracać obraz za pomocą następującego kodu. Uwaga ta wykorzystuje CGImageRef które można uzyskać z UIImage poprzez
CGImageRef imageRef = [self CGImageRotatedByAngle:[image CGImage] angle:30];
Po uzyskaniu obróconego obrazu można ustawić wizerunku ImageView do nowego obróconego obrazu jak ta:
UIImage* img = [UIImage imageWithCGImage: imageRef];
myImageView.image = img;
tutaj jest to metoda, która będzie obracać imageRef:
- (CGImageRef)CGImageRotatedByAngle:(CGImageRef)imgRef angle:(CGFloat)angle
{
CGFloat angleInRadians = angle * (M_PI/180);
CGFloat width = CGImageGetWidth(imgRef);
CGFloat height = CGImageGetHeight(imgRef);
CGRect imgRect = CGRectMake(0, 0, width, height);
CGAffineTransform transform = CGAffineTransformMakeRotation(angleInRadians);
CGRect rotatedRect = CGRectApplyAffineTransform(imgRect, transform);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef bmContext = CGBitmapContextCreate(NULL,
rotatedRect.size.width,
rotatedRect.size.height,
8,
0,
colorSpace,
kCGImageAlphaPremultipliedFirst);
CGContextSetAllowsAntialiasing(bmContext, YES);
CGContextSetShouldAntialias(bmContext, YES);
CGContextSetInterpolationQuality(bmContext, kCGInterpolationHigh);
CGColorSpaceRelease(colorSpace);
CGContextTranslateCTM(bmContext,
+(rotatedRect.size.width/2),
+(rotatedRect.size.height/2));
CGContextRotateCTM(bmContext, angleInRadians);
CGContextTranslateCTM(bmContext,
-(rotatedRect.size.width/2),
-(rotatedRect.size.height/2));
CGContextDrawImage(bmContext, CGRectMake(0, 0,
rotatedRect.size.width,
rotatedRect.size.height),
imgRef);
CGImageRef rotatedImage = CGBitmapContextCreateImage(bmContext);
CFRelease(bmContext);
[(id)rotatedImage autorelease];
return rotatedImage;
}
Spójrz na obracanie warstwy ImageView. Będziesz musiał zaimportować bibliotekę QuartzCore, aby była dostępna.
myImageView.layer.transform = CGAffineTransformMakeRotation (1.5);
musiał używać 'setAffineTransform' – fabian789
Spróbuj tego, że pracuje dla mnie:
[UIView beginAnimations:nil context:nil];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationRepeatCount:10];
myImgView.transform = CGAffineTransformMakeRotation(M_PI);
[UIView commitAnimations];
Powodzenia!
następujący kod działa poprawnie z Swift:
let img = UIImage(CGImage: self.imageView.image!.CGImage, scale: 1.0, orientation: UIImageOrientation.Right)
self.imageView.image = img
self.imageView.setNeedsLayout()
Jeśli trzeba obracać/przerzucać obraz do celów lokalizacyjnych można użyć następujących: imageView.image = imageView.image?.imageFlippedForRightToLeftLayoutDirection()
- 1. Obracanie obrazu w Matplotlib
- 2. Obracanie obrazu w Androidzie
- 3. Obracanie obrazu w C/C++
- 4. Złe obracanie obrazu
- 5. Wyświetlenie lokalnego obrazu w UIImageView
- 6. Obracanie obrazu za pomocą css
- 7. Obracanie obrazu wokół osi Y
- 8. obracanie obrazu za pomocą css
- 9. UIImageView obrazu upraw na podstawie UIView maskować
- 10. UIImageView i UIScroll Powiększenie obrazu
- 11. UIImageView uzyskać pozycję pokazywania obrazu
- 12. Obracanie obrazu bez obkurczania w systemie Android
- 13. Obracanie obrazu odpowiadającego przeciągnięciu dotykiem w iPhonie
- 14. Obracanie obrazu przestawnego w Centrum - Android
- 15. Łączone obracanie obrazu i przycinanie w jQuery
- 16. Obracanie obrazu tła za pomocą CSS3
- 17. Jak uzyskać wyświetlaną ramkę obrazu z UIImageView?
- 18. Utwórz UIImageView z częścią pliku obrazu
- 19. Jak uzyskać płynne obracanie obrazu w systemie Android?
- 20. Obracanie obrazu w centrum nie działa gładko (Monodroid)
- 21. Jak rozciągnąć rozmiar obrazu w UIImage lub UIImageView
- 22. UIImageView wypełnienie UIView
- 23. CSS: obracanie obrazu i wyrównanie u góry po lewej
- 24. Dodawanie UILabel do UIImageView
- 25. Obracanie obrazu PHP traci jakość po każdym obrocie
- 26. Obracanie obrazu przez jego własne centrum na płótnie
- 27. Obracanie i przycinanie UIImage
- 28. Rysowanie kształtu w UIImageView IOS
- 29. Swift UIImageView Rozciągnięty aspekt
- 30. Przypisanie nowego obrazu do UIImageView za pomocą Swift
podziękowaniem ty. Dokładnie tego chcę. – murzynpl
Ktoś może napotkać nieprzewidywalny rezultat, tak jak ostatnio - ostateczny obraz tracił swój pierwotny rozmiar i przycięte rogi. Więc trochę zmodyfikowałem funkcję, by uzyskać poprawny wynik. Jeśli ktoś zastanawia się, czy moje rozwiązanie jest tutaj: http://stackoverflow.com/questions/19219855/uiimageview-get-transformed-uiimage/19221081#19221081 – heximal
Po obrocie rozmiar obrazu zmieni się zgodnie z poprzednim komentatorem. W powyższym kodzie występuje niewielki błąd. Ostatnie wywołanie CGContextTranslateCTM i CGContextDrawImage powinno używać oryginalnej szerokości i wysokości zamiast roundedRect.size.width i rounded.size.height. Gdy to zrobisz, powyższy kod działa doskonale. Powód - tworzony jest ctxt z obracanym prostokątem, początek jest przesuwany do środka, a następnie odwrotnie obracany, aby dopasować oryginalną orientację obrazu. W tym momencie musisz przenieść go z powrotem do układu współrzędnych oryginalnego obrazu. – matangs