IOS 關(guān)于某個界面某個視圖全屏以及狀態(tài)欄橫向問題

注:文章看過讀過很多耗美,從來沒有自己寫過,有寫的不好的地方請諒解!謝謝


由于項目中APP不支持橫屏米死,但是單一某個視頻界面需要支持橫屏以及狀態(tài)欄橫向

正常顯示(豎屏)

注:由于為公司項目衷佃,當(dāng)前截圖只是截取需要操作的界面的View


橫屏:


為了更好的理解這個視圖趟卸,我畫了一個圖還解釋(需要橫屏顯示的及綠色部分,在豎屏正常顯示的時候界面就如下):

廢話不多少氏义,直接上代碼:

我的當(dāng)前項目的需求是點擊全屏按鈕之后锄列,橫屏顯示界面

#pragma mark -- 全屏按鈕

- (void)mainScreenAction:(UIButton *)btn{

DLog(@"全屏按鈕");

isHalfScreen= !isHalfScreen;

if(isHalfScreen){//進入全屏

[self enterFullscreen];

}else{

//退出全屏

[self exitFullscreen];

}

}

//進入全屏

#pragma mark -- 進入全屏

- (void)enterFullscreen {

/** 記錄進入全屏前的parentView和frame*/

openGLView.movieViewParentView = openGLView.superview;

openGLView.movieViewFrame = openGLView.frame;

/** movieView移到window上*/

CGRect rectInWindow = [openGLView convertRect:openGLView.bounds toView:[UIApplication sharedApplication].keyWindow];

[openGLView removeFromSuperview];

openGLView.frame = rectInWindow;

[[UIApplication sharedApplication].keyWindow addSubview:openGLView];

[sliderView removeFromSuperview];

/** 執(zhí)行動畫*/

[UIView animateWithDuration:0.5 animations:^{

openGLView.transform = CGAffineTransformMakeRotation(M_PI_2);

openGLView.bounds = CGRectMake(0, 0, CGRectGetHeight(openGLView.superview.bounds), CGRectGetWidth(openGLView.superview.bounds));

openGLView.center = CGPointMake(CGRectGetMidX(openGLView.superview.bounds), CGRectGetMidY(openGLView.superview.bounds));

} completion:^(BOOL finished) {

//退出全屏按鈕位置

sliderView.frame = CGRectMake(openGLView.bounds.size.width-65, openGLView.bounds.size.height-50, 40, 40);

[mainScreenBtn setImage:[UIImage imageNamed:@"退出全屏.png"] forState:UIControlStateNormal];

[openGLView addSubview:sliderView];

}];

[self refreshStatusBarOrientation:UIInterfaceOrientationLandscapeRight];

//顯示狀態(tài)欄

[[UIApplication sharedApplication] setStatusBarHidden:FALSE];

[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];

}

//退出全屏

#pragma mark -- 退出全屏

- (void)exitFullscreen {

CGRect frame11 = [openGLView.movieViewParentView convertRect:openGLView.movieViewFrame toView:[UIApplication sharedApplication].keyWindow];

[UIView animateWithDuration:0.5 animations:^{

[sliderView removeFromSuperview];

openGLView.transform = CGAffineTransformIdentity;

openGLView.frame = frame11;

} completion:^(BOOL finished) {

/*

* movieView回到小屏位置

*/

[openGLView removeFromSuperview];

openGLView.frame = openGLView.movieViewFrame;

[openGLView.movieViewParentView addSubview:openGLView];

//退出全屏按鈕位置

sliderView.frame = CGRectMake(openGLView.bounds.size.width-65, openGLView.bounds.size.height-50, 40, 40);

[mainScreenBtn setImage:[UIImage imageNamed:@"全屏.png"] forState:UIControlStateNormal];

[openGLView addSubview:sliderView];

}];

[self refreshStatusBarOrientation:UIInterfaceOrientationPortrait];

//顯示狀態(tài)欄

[[UIApplication sharedApplication] setStatusBarHidden:FALSE];

[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];

}

- (void)refreshStatusBarOrientation:(UIInterfaceOrientation)interfaceOrientation {

[[UIApplication sharedApplication] setStatusBarOrientation:interfaceOrientation animated:YES];

}

這里在實現(xiàn)了視圖界面橫屏之后,會出現(xiàn)狀態(tài)欄依然是豎屏顯示的狀態(tài)惯悠。所以還要做以下操作(因為項目框架是UINavigationController搭建的右蕊,故在兩個控制器里都需要加以下代碼)

UINavigationController:

- (UIInterfaceOrientationMask)supportedInterfaceOrientations {

return [[self.viewControllers lastObject] supportedInterfaceOrientations];

}

- (BOOL)shouldAutorotate{

return [[self.viewControllers lastObject] shouldAutorotate];

}



然后在需要橫屏的控制器里加入代碼

- (BOOL)shouldAutorotate {

return NO;

}

具體代碼可以參照demo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市吮螺,隨后出現(xiàn)的幾起案子饶囚,更是在濱河造成了極大的恐慌,老刑警劉巖鸠补,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件萝风,死亡現(xiàn)場離奇詭異,居然都是意外死亡紫岩,警方通過查閱死者的電腦和手機规惰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來泉蝌,“玉大人歇万,你說我怎么就攤上這事⊙悖” “怎么了贪磺?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長诅愚。 經(jīng)常有香客問我寒锚,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任刹前,我火速辦了婚禮泳赋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘喇喉。我一直安慰自己祖今,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布拣技。 她就那樣靜靜地躺著衅鹿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪过咬。 梳的紋絲不亂的頭發(fā)上大渤,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天,我揣著相機與錄音掸绞,去河邊找鬼泵三。 笑死,一個胖子當(dāng)著我的面吹牛衔掸,可吹牛的內(nèi)容都是我干的烫幕。 我是一名探鬼主播,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼敞映,長吁一口氣:“原來是場噩夢啊……” “哼较曼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起振愿,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤捷犹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后冕末,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體萍歉,經(jīng)...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年档桃,在試婚紗的時候發(fā)現(xiàn)自己被綠了枪孩。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡藻肄,死狀恐怖蔑舞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情嘹屯,我是刑警寧澤攻询,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站抚垄,受9級特大地震影響蜕窿,放射性物質(zhì)發(fā)生泄漏谋逻。R本人自食惡果不足惜呆馁,卻給世界環(huán)境...
    茶點故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一桐经、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧浙滤,春花似錦阴挣、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至揖膜,卻和暖如春誓沸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背壹粟。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工拜隧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人趁仙。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓洪添,卻偏偏與公主長得像,于是被迫代替她去往敵國和親雀费。 傳聞我的和親對象是個殘疾皇子干奢,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,870評論 2 361

推薦閱讀更多精彩內(nèi)容