ios(ipad,iphone)旋轉螢幕檢測通用方法

來源:互聯網
上載者:User

標籤:io   os   ar   使用   sp   on   問題   cti   代碼   

在特別的情境下,需要針對旋轉螢幕作特殊處理。在ios系統下實現相關的功能還是比較方便的。

我下面介紹兩種方法:

1.註冊UIApplicationDidChangeStatusBarOrientationNotification通知(舉例:在一個viewcontroller類的viewdidload中註冊該通知),範例程式碼如下:

        [[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(statusBarOrientationChange:)name:UIApplicationDidChangeStatusBarOrientationNotificationobject:nil];

- (void)statusBarOrientationChange:(NSNotification *)notification

{

    

    UIInterfaceOrientation orientation = [[UIApplicationsharedApplication] statusBarOrientation];

    if (orientation ==UIInterfaceOrientationLandscapeRight) // home鍵靠右

    {

        //

    }

    

    if (

        orientation ==UIInterfaceOrientationLandscapeLeft)// home鍵靠左

    {

        //

    }

    

    if (orientation ==UIInterfaceOrientationPortrait)

    {

        //

    }


    if (orientation ==UIInterfaceOrientationPortraitUpsideDown)

    {

        //

    }

}

注意這種方式監聽的是StatusBar也就是狀態列的方向,所以這個是跟你的布局有關的,你的布局轉了,才會接到這個通知,而不是裝置旋轉的通知。

當我們關注的東西和布局相關而不是純粹裝置旋轉,我們使用上面的代碼作為實現方案比較適合。

2.註冊UIDeviceOrientationDidChangeNotification通知(舉例:我們同樣在一個viewcontroller類的viewdidload中註冊該通知),範例程式碼如下:

  [[NSNotificationCenter defaultCenter] addObserver:selfselector:@selector(orientChange:)name:UIDeviceOrientationDidChangeNotificationobject:nil];

- (void)orientChange:(NSNotification *)noti

{

    

    NSDictionary* ntfDict = [noti userInfo];

    

    UIDeviceOrientation  orient = [UIDevicecurrentDevice].orientation;

    /*

     UIDeviceOrientationUnknown,

     UIDeviceOrientationPortrait,            // Device oriented vertically, home button on the bottom

     UIDeviceOrientationPortraitUpsideDown,  // Device oriented vertically, home button on the top

     UIDeviceOrientationLandscapeLeft,       // Device oriented horizontally, home button on the right

     UIDeviceOrientationLandscapeRight,      // Device oriented horizontally, home button on the left

     UIDeviceOrientationFaceUp,              // Device oriented flat, face up

     UIDeviceOrientationFaceDown             // Device oriented flat, face down   */

    

           switch (orient)

        {

            caseUIDeviceOrientationPortrait:

                

                break;

            caseUIDeviceOrientationLandscapeLeft:

    

                

                break;

            caseUIDeviceOrientationPortraitUpsideDown:

 

          

                break;

            caseUIDeviceOrientationLandscapeRight:

        

           

                break;

                

            default:

                break;

        }

}

注意到這種方式裡面的方向還包括朝上或者朝下,很容易看出這個完全是根據裝置自身的物理方向得來的,當我們關注的只是物理朝向時,我們通常需要註冊該通知來解決問題(另外還有一個加速計的api,可以實作類別似的功能,該api較底層,在上面兩個方法能夠解決問題的情況下建議不要用,使用不當效能損耗非常大)。




ios(ipad,iphone)旋轉螢幕檢測通用方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.