1. 程式人生 > >iOS 實現單個頁面支援橫豎屏,其他頁面只能豎屏

iOS 實現單個頁面支援橫豎屏,其他頁面只能豎屏

 最近在自己的專案裡面  有需要做一個需求 : app中某一個頁面支援橫豎屏, 而其他頁面只能豎屏。 
  • 1
  • 2

實現方法如下: 
1 首先需要Xcode中選中支援的螢幕方向 
這裡寫圖片描述

2 Appdelegate中 
.h

@property (nonatomic,assign)NSInteger allowRotate; 
  • 1

.m中

//此方法會在裝置橫豎屏變化的時候呼叫
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{

 //   NSLog(@"方向  =============   %ld", _allowRotate);
    if (_allowRotate == 1) {
        return UIInterfaceOrientationMaskAll;
    }else{
        return (UIInterfaceOrientationMaskPortrait);
    }
}


// 返回是否支援裝置自動旋轉
- (BOOL)shouldAutorotate
{
    if (_allowRotate == 1) {
        return YES;
    }
    return NO;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

3 在需要支援橫豎屏的controller中:

viewWillApplear 中

 //在檢視出現的時候,將allowRotate改為1,
    AppDelegate * delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
    delegate.allowRotate = 1;
  • 1
  • 2
  • 3

viewWillDisappear中

 //在檢視出現的時候,將allowRotate改為0,
    AppDelegate * delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
    delegate.allowRotate = 0;
  • 1
  • 2
  • 3

寫好以上程式碼之後, 會發現一些問題: 當橫屏頁面直接點選“返回”按鈕退出的時候, 頁面依然是橫屏, 而我們需要的是僅一個頁面可以橫屏,測試需要在viewWillDisappear中加入如下程式碼:

    if ([[UIDevice currentDevice] respondsToSelector:@selector(setOrientation:)]) {
        SEL selector = NSSelectorFromString(@"setOrientation:");
        NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[UIDevice instanceMethodSignatureForSelector:selector]];
        [invocation setSelector:selector];
        [invocation setTarget:[UIDevice currentDevice]];
        int val = UIInterfaceOrientationPortrait;
        [invocation setArgument:&val atIndex:2];
        [invocation invoke];
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

此時就可以使app僅有設定頁面支援橫豎屏了!

此時如果app要求使用者在橫屏 豎屏的模式下改變UI(橫屏與豎屏對應不同的UI), 可以在以下方法中執行

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    // do something before rotation
    if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) {
         螢幕從豎屏變為橫屏時執行

    }else{
        螢幕從橫屏變為豎屏時執行
    }
  }


- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
    // do something after rotation

}

相關推薦

iOS 實現單個頁面支援橫豎,其他頁面只能

最近在自己的專案裡面 有需要做一個需求 : app中某一個頁面支援橫豎屏, 而其他頁面只能豎屏。 1 2 實現方法如下: 1 首先需要Xcode中選中支援的螢幕方向  2 Appdelegate中 .h @property (nonatomic,assign)NSInteger allowRota

iOS中如何實現單個頁面支援橫豎其他頁面只能

最近在自己的專案裡面 有需要做一個需求 : app中某一個頁面支援橫豎屏, 而其他頁面只能豎屏。 實現方法如下: 1 首先需要Xcode中選中支援的螢幕方向 2 Appdelegate中 .h @property (nonatomi

iOS 實現單個頁面支持橫豎,其他頁面只能

eth duration amp pro 如果 oid span uiwindow obj 最近在自己的項目裏面 有需要做一個需求 : app中某一個頁面支持橫豎屏, 而其他頁面只能豎屏。 1 2 實現方法如下: 1 首先需要Xcode中選中支持的屏幕方向 2

iOS 實現點選tabbar跳轉登入頁面

在APP的設計中常常有需要點選tabbar直接進行跳轉登入的操作。下面說一下需要怎麼來實現這個操作。 程式碼。 (BOOL)tabBarController:(UITabBarController )tabBarController should

ios 只讓播放視訊的 時候能夠全 其他全部非全非橫 目前已經測試很多 可以

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { if ([NSStringFrom

從當前頁面跳轉到其他頁面的某個地方

從index頁面跳轉到about頁面的friend-links-section-hook這個地方 index.html <a href="about.html#friend-links-sec

Activity橫豎切換時先看到橫/再變換回/橫

因為公司APP上的一個Bug遇到一個問題,跟了下這個問題,稍微記錄一下。 需求:當App從後臺回到前臺的時候,要彈出一個廣告頁Activity A ,而廣告頁希望是豎屏顯示的,這樣才符合引人入勝的效果咯。 開發的實現:做這個需求,之前開發的實現是,在Application中註冊A

iOS螢幕旋轉之為橫視訊播放增加模式

在App Store上的大部分視訊播放App中,都實現了豎屏小屏播放以顯示更多相關資訊,橫屏切換到全屏播放,這樣的互動顯得優雅而大方。最近專案裡有個這樣的需求,為全屏視訊播放加上豎屏模式。下面,讓我們一起來實現這個需求。 iOS中的方向 iOS裝置中有兩種方向,一種是裝

Web前端:如何實現選擇select下拉框選中跳轉其他頁面

option chang 前端 實現 cati onchange 下拉框選中 b- class <select onchange="window.location=this.value;"><option value="a.html">用戶管理<

Servlet中如何實現按鈕的跳轉其他頁面

方法一: 使用表單form包裝submit按鈕,將要跳轉的xxx.do 寫在表單的action中 out.print(" <form action='manager_insert.do' method='post' id='myform' >");

iOS 實現截圖,scrollview,tableview截圖

通常截圖的時候,如果需要截scroll,或者tableview的時候就不能全屏截圖了。 截圖方法。 圖片儲存的回撥 程式碼部分 - (void)btnAction:(UIButton *)sender { UIImage*

微信如何實現自動跳轉到用其他瀏覽器開啟指定頁面下載APK

微信瀏覽器跳轉瀏覽器下載app解決方案 新版本微信瀏覽器中,已禁用下載APP應用,只支援開啟微信合作商APP下載,所以無法通過微信瀏覽器直接下載APP應用。列舉微信瀏覽器下載APP的種解決方案: 方案:通過Url 跳轉到手機預設瀏覽器,或者是蘋果應用商店/APP Store,在應用商店

【解決】移動端裝置·橫豎頁面內容字型大小調整的問題

首先判斷是不是橫豎屏導致的問題,所以要程式碼檢驗一下。 window.orientation 物件在手機上才可生效。 <script type="text/javascript"&g

微信如何實現自動跳轉到用其他瀏覽器開啟指定頁面下載APP

微信瀏覽器跳轉瀏覽器下載app解決方案 新版本微信瀏覽器中,已禁用下載APP應用,只支援開啟微信合作商APP下載,所以無法通過微信瀏覽器直接下載APP應用。列舉微信瀏覽器下載APP的種解決方案: 方案:通過Url 跳轉到手機預設瀏覽器,或者是蘋果應用商店/APP Store,在應用商店

在servlet中實現彈出提示框,點選確認後跳轉其他頁面

PrintWriter out = response.getWriter();如果成功彈出登陸成功並跳到下一個頁面out.print("<script>alert('登入成功!');window.location.href='跳到登陸成功後的頁面'</sc

iOS 實現react-native預載入,優化第一次載入白問題

專案中存在多個react-native頁面入口,每個入口使用以下方法初始化: - (instancetype)initWithBundleURL:(NSURL *)bundleURL moduleName:(N

微信如何實現自動跳轉到用其他瀏覽器打開指定頁面下載APP

高度 blank 提高 宣傳 更多 很多 互聯 瀏覽器 中國移動 微信掃描二維碼安裝apk時,如何避免點擊右上角?——這個問題困擾很多App的推廣團隊。 其實自從騰訊開放平臺戰略以來,擁有中國強大互聯網資源的騰訊站在更高的戰略高度上,以自信的態度面對互聯網生態鏈,對待遵

NavigationController單個介面橫其他

由於自己沒有mac裝置,x200裝黑蘋果失敗,本文的程式碼全靠記憶,如有錯誤之處敬請指正。 最近在做一個帶有報表的iOS App開發,要求從記錄介面轉到圖表介面時從豎屏轉為橫屏。 首先在info.plist中有關於app支援的螢幕方向設定,預設支援豎屏和橫屏(ipho

dedecms 修改留言板模板 實現其他頁面相同的佈局

用過DEDECMS的朋友都知道,dedecms留言板,問答模組急會員空間模組都不支援dedecms的常用標籤,如果用留言板或者問答的話修改起來很不方便,電商圈給大家介紹一種方法可以讓這幾個模組支援標籤,不過是要懂一點PHP的知識修改最好,在修改以前請注意要先備份一下原來的檔案

ios搜尋(可實現模糊搜尋 支援拼音檢索 首字母等)

一、搜框中輸入關鍵字的事件響應 -(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{ NSLog(@"輸入的關鍵字是---%@---%lu",s