UIView的旋轉


做過幾次有關UIView坐標變換的,但是經常不能得到自己想要的效果,今天就把它仔細研究了下。記下來等以后忘記的時候再復習

重寫shouldAutorateToInterfaceOrientation:,限制某個方向會改變原點的位置,原點會一直保持在左上角,但已經不是原來的左上角了

 

setStatusBarOrientation.改變狀態欄的方向。它不會改變原點的位置,但會改變鍵盤的方向

旋轉前self.myviewframe ={0,0,320,50}

CGAffineTransform at =CGAffineTransformMakeRotation(M_PI/2);

[self.myview setTransform:at];

旋轉后frame={135,-135,50,320},視圖的所有像素旋轉90

坐標是相對於父視圖的

 

假如view已經轉成豎的,這時通過設置frame而不是通過setTransform強制成橫的話,會截掉部分圖像

 

坐標多次變換的合成,要以被變換的view的局部坐標系為參照,比如

testView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 50)];
UILabel*label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 100, 20)];
label.text =@"Test";
label.tag=100;
[testView addSubview:label];
此時的 frame ={0,0,320,50}

CGAffineTransform at =CGAffineTransformMakeRotation(M_PI/2);先順時鍾旋轉90
at =CGAffineTransformTranslate(at,200,0);,
[self.testView setTransform:at];

此時的 frame ={135,65,50,320},可以看到寬高已經反過來了,view中的像素方向也改變了,而如果只是用setFrame來改變寬高的話是不會改變像素方向的






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM