UIViewController沒有隨着設備一塊兒旋轉的緣由

對於iPhone app,UIViewController類提供了基本的視圖管理模式。當設備改變方向的時候view controller的視圖會自動隨之旋轉的。若是視圖和子視圖的autoresizing屬性設置是對的,這時候視圖又沒有隨着設備一塊兒旋轉,多是如下的緣由:html

 

1.view controller沒有完成代理方法app

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation;iphone

也要實現了shouldAutorotateToInterfaceOrientation方法,同時shouldAutorotateToInterfaceOrientation方法要返回YES來支持全部的旋轉方向工具

 

2.view controller的UIView屬性嵌入在UIWindow中,並不是是一個附加的view controllerui

你可能會發現shouldAutorotateToInterfaceOrientation方法只會在view controller啓動的時候被調用,不會由於設置的旋轉而在被調用。這是由於view controller束縛着他們所管理的視圖,view controller是用來處理時間的響應鏈的一部分。view controller是從UIResponder繼承而來,同時他被插入到他所管理的視圖和他的superview之間。所以,一般的作法是在你的app中有一個主view controller來做爲響應鏈的一部分。一般來講會添加一個主view controller,例如UINavigationController, UITabBarController或者UIViewController到UIWindow上。代理

例如視頻

[myWindow addSubview:primaryViewController.view]; htm

若是你添加了另一個view controller的UIView屬性到UIWindow(anotherController和主view controller在同一個等級上)對象

[myWindow addSubview:anotherController.view];blog

anotherController將不會接受旋轉事件,只有第一個view controller(primaryViewController)會接受旋轉事件。

 

3.你添加了view controller的UIView屬性到UIWindow做爲subview,可是過早的release它。

UIWindow會retain視圖,而不是view controller。你不能過早的release他。在UIApplicationDelegate子類中定義他爲retain屬性。

 

4.在UITabBarController或者UINavigationController中的子view controller沒有對同一方向的支持。

爲了確保全部的子view controller旋轉正確,你的每個view controller,每個tab或者額navigation都要完成shouldAutorotateToInterfaceOrientation,並且必須支持對於同一方向的旋轉,也就是說對於同一方向的位置要返回爲YES。

 

5.重寫-(id)init:或者 -(id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle 方法的時候沒有調用super。

對於對象的初始化,在你的view controller的init或者initWithNibName方法中必需要調用super。

 

音頻視頻播放:http:blog.sina.com.cn/s/blog_6f1a34260100tlvx.html

 

 iphone提供了優秀的重力加速計,可以很靈敏地感應到手機的屏幕狀態。在咱們開發iphone應用時,爲了提升用戶體驗,會來監聽屏幕的當前狀態。
對於UIViewController來講,提供了好幾種方法。

    最簡單的就是咱們可使用Interface Builder這個工具來幫助咱們實現簡單的屏幕界面適配,只須要在IB 中的Size Insepector 中經過對Autosizing 的
設置來實現。但這隻能作到簡單界面的實現,若是界面比較複雜,可能就須要咱們經過代碼來實現。

    第二個咱們能夠經過對 willAnimateRotationToInterfaceOrientation:duration:這個方法的重寫來配置咱們的自動旋轉。

    第三,你也能夠經過對willAnimateFirstHalfOfRotationToInterfaceOrientation:duration:與willAnimateSencondHalfOfRotationToInterfaceOrientation:duration:兩個方法的重寫來更加精細地配置咱們的自動旋轉視圖。特別須要注意 的就是前一個方法在執行時,此時的UIInterfaceOrientation仍然是旋轉前的原有值,只有後一個方法在執行時UIInterfaceOrientation纔是屏幕旋轉後的值。

相關文章
相關標籤/搜索