2011-08-24 13 views
7

Mam UIImageView, który jest wewnątrz innego UIView.UIImageView "zgniecenia" po CGAffineTransformMakeRotation

obrócić UIImageView z czymś takim:

object.transform=CGAffineTransformMakeRotation(angle) 

Kiedy zewnętrzna UIView nie obraca się, i może korzystać CGAffineTransformMakeRotation obrócić UIImageView i działa prawidłowo.

Jednak, gdy zewnętrzny UIView jest obrócony, a następnie obrócę UIImageView (niezerowy "kąt" powyżej) - UIImageView pojawia się "zgnieciony" lub "spłaszczony".

To wydaje się być coraz gorsze, ponieważ jest obracane pod różnymi kątami.

Dlaczego tak się dzieje? Czy zewnętrzne UIView modyfikuje macierz transformacji, którą następnie modyfikuję, ustawiając ją explicit?

Jak mogę obrócić UIImageView w obróconym pliku UIView i czy jest on prawidłowo obracany?

Odpowiedz

15

Być może Twój UIIamgeView jest automatycznie zarchiwizowany przez jego superview.

Można spróbować wyłączyć możliwość automatycznej zmiany przez ustawienie:

imageView.autoresizingMask = UIViewAutoresizingNone;

lub jeśli po prostu nie chcą iOS, aby automatycznie zmienić rozmiar swojego ImageView ale nadal chcesz go automatycznie ustawić pozycję dla Ciebie można nazwać:

imageView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleRightMargin;

Powiedz mi, czy nadal masz problem.

+0

ah ... mądra myśl! Może to być "zgniatanie" nie wtedy, gdy jest koniecznie obracane, ale raczej po zmianie orientacji, która w rzeczywistości zmienia rozmiar [zewnętrznego] UIView! Spróbuję dziś wieczorem! Dzięki! – Brad

+0

Odpowiedź +1 dawała wskazówki, które musiałem pamiętać, aby wyłączyć automatyczny układ w widoku najwyższego poziomu. – Olie

3

Wygładzanie to proces, w którym krawędzie widoku są mieszane z kolorami warstwy znajdującej się poniżej. Wygładzanie krawędzi widoku można włączyć w całym systemie, ustawiając flagę UIViewEdgeAntialiasing w pliku info.plist, ale jak ostrzega dokumentacja, może to mieć negatywny wpływ na wydajność (ponieważ wymaga ona animacji rdzeniowej do próbkowania pikseli z bufora renderowania pod warstwą w celu obliczenia mieszania).

Renders z krawędzi antialisasing = TAK

Powiązane problemy