2012-02-01 8 views
10

chcę, aby obrócić widok programowo za to Użyłem poniższy kod:Szerokość i wzrost wysokości po CGAffineTransformRotate stosowane do UIView

CGAffineTransform rotateTransform = contentView.transform; 
CGAffineTransform rotatenewTransform = CGAffineTransformRotate(rotateTransform,aFloatRotate); 
contentView.transform = rotatenewTransform; 

Kiedy zrobić to szerokość i wysokość contentView (mój UIView) zwiększenia .

Co należy zrobić, aby contentView pozostał taki, jaki jest i również się obraca?

z góry dzięki.

Tu wyjaśniam mój problem bardziej szczegółowo:

mój contentView zawiera przyciski i ImageView w nim. ten contentView dodaje się w tle i ta zawartość nie powinna wychodzić poza tę granicę tła.

ale po obróceniu tego widoku przez górny kod, szerokość i szerokość contentView zwiększa się, a więc czasami wychodzi poza granicę tła.

Mam nadzieję, że będzie to dla ciebie jasne. :)

+0

proszę wybrać odpowiedź, jeśli jej prawdziwy – GameLoading

+1

@ fasttrack nadal stoi ten sam problem. – Prashant

+0

Znalazłem rozwiązanie tego problemu i zapisałem transformację widoku i teraz działa dobrze. – Prashant

Odpowiedz

9

Szerokość i wysokość (prawdopodobnie bierzesz to od frame.size) muszą się zmienić, ponieważ opisują najmniejszy prostokąt, który przechowuje cały obrócony widok - jeśli obrócisz prostokąt o 45 stopni, to prostokąt do przytrzymania obrócony prostokąt jest szerszy i wyższy od oryginalnego prostokąta.

"Rzeczywisty" rozmiar obróconego widoku będzie nadal dostępny w prostokącie bounds - jest to wyrażone w wewnętrznym układzie współrzędnych widoku, który nie jest obracany.

Dlatego, jeśli oryginalna frame było pochodzenie (100100), rozmiar (100,50), Twój obracać widok miałoby frame gdzie pochodzenie i rozmiar był prostokąt, który mógłby zmieścić swoją obróconego w nim pogląd, opisanej w układ współrzędnych superview. Jeśli teraz to zrobiłeś:

CGFloat width = contentView.frame.size.width; 

Dostaniesz zmienioną wartość. Jeśli jednak to zrobisz:

CGFloat width = contentView.bounds.size.width; 

Otrzymasz oryginalną wartość 100 szerokości.

+0

możesz wyjaśnić to za pomocą jakiegoś kodu przykładu. – Prashant

+0

Próbowałem ustawić granice contentView, ale jego childs pozostają z contentView. – Prashant

+0

Chcę obrócić widok, ale szerokość i wysokość widoku nie powinny się zmieniać. – Prashant

Powiązane problemy