上周四用了半天的時(shí)間,項(xiàng)目中寫的有關(guān)視頻橫屏的問(wèn)題都沒(méi)有實(shí)現(xiàn)。查了很多資料此衅,都沒(méi)有解決。今天早上終于解決了。記錄下改問(wèn)題炕柔。
有關(guān)橫屏的設(shè)置
- (IBAction)large:(id)sender{
NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeLeft];
[[UIDevice currentDevice] setValue:value forKey:@"orientation"];
}
橫屏返回
- (IBAction)largeBack:(id)sender{
NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPortrait];
[[UIDevice currentDevice] setValue:value forKey:@"orientation"];
}
設(shè)置
這些都是系統(tǒng)的方法酌泰,設(shè)置了這些方法后,橫屏一直不展示匕累。當(dāng)當(dāng)當(dāng)陵刹。。欢嘿。衰琐。解決問(wèn)題的辦法來(lái)了。
因?yàn)樵谶@個(gè)地方設(shè)置的是強(qiáng)制豎屏炼蹦,所以羡宙,橫屏的方法是不會(huì)走的。所以要在APPdelegate中做一下設(shè)置掐隐。
1.首先在 appDelegate.h 中創(chuàng)建一個(gè) BOOL 屬性狗热,
@property (nonatomic,assign)BOOL allowRotation; //是否支持橫屏
2.然后到 appDelegate.m 中實(shí)現(xiàn):
- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(nullable UIWindow *)window{
if (self.allowRotation) {
return UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskPortrait ;
}
return UIInterfaceOrientationMaskPortrait;
}
這樣,當(dāng) allowRotation 為 YES 時(shí)虑省,就支持橫屏了匿刮。
3、需要支持的頁(yè)面中探颈,修改 allowRotation 的值為 YES熟丸,即可支持橫豎屏旋轉(zhuǎn)了:
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
// 出現(xiàn)時(shí)可旋轉(zhuǎn)
((AppDelegate *)[UIApplication sharedApplication].delegate).allowRotation = YES;
}
4.記得在頁(yè)面將要消失時(shí)修改為只支持豎屏:
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
// 消失時(shí)恢復(fù)豎屏
((AppDelegate *)[UIApplication sharedApplication].delegate).allowRotation = NO;
// 立即變?yōu)樨Q屏
[[UIDevice currentDevice] setValue:[NSNumber numberWithInteger:UIDeviceOrientationPortrait] forKey:@"orientation"];
5. 上述代碼實(shí)現(xiàn)的是自動(dòng)旋轉(zhuǎn)、如果需要強(qiáng)制旋轉(zhuǎn)的的話伪节,在上述把橫屏打開(kāi)的前提下光羞,使用下面的代碼即可進(jìn)行強(qiáng)制的橫屏或者豎屏了:
// 豎屏
[[UIDevice currentDevice] setValue:[NSNumber numberWithInteger:UIDeviceOrientationPortrait] forKey:@"orientation"];
// 橫屏
[[UIDevice currentDevice] setValue:[NSNumber numberWithInt:UIInterfaceOrientationLandscapeRight] forKey:@"orientation"];