iOS-UIDevice的簡單使用

1.獲取設(shè)備方向

typedef NS_ENUM(NSInteger, UIDeviceOrientation) {
    UIDeviceOrientationUnknown,
    UIDeviceOrientationPortrait,            // 設(shè)備垂直豎向方向放置, 并且home鍵在下方
    UIDeviceOrientationPortraitUpsideDown,  //設(shè)備垂直豎向方向放置, 并且home鍵在上方
    UIDeviceOrientationLandscapeLeft,       // 設(shè)備垂直橫向方向放置, 并且home鍵在右方
    UIDeviceOrientationLandscapeRight,      // 設(shè)備垂直橫向方向放置, 并且home鍵在左方
    UIDeviceOrientationFaceUp,              // 設(shè)備水平放置, 屏幕在上方
    UIDeviceOrientationFaceDown             // 設(shè)備水平放置, 屏幕在下方
} (TVOS不可用)

判斷當(dāng)前設(shè)備方向

//但這個有個弊端,就是沒有設(shè)備方向改變通知時,返回UIDeviceOrientationUnknown
if([[UIDevice currentDevice] orientation] == UIDeviceOrientationPortrait){
    NSLog(@"當(dāng)前設(shè)備是垂直豎向旧困,并且home鍵在下方");
}
//豎屏吼具,包括UIDeviceOrientationPortrait || UIDeviceOrientationPortraitUpsideDown
if (UIDeviceOrientationIsPortrait([UIDevice currentDevice].orientation)) {
    NSLog(@"豎屏");
}
//橫屏锥债,包括UIDeviceOrientationLandscapeLeft || UIDeviceOrientationLandscapeRight
if (UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation)) {
    NSLog(@"橫屏");
}

//所以推薦下面的方式
if (![UIDevice currentDevice].generatesDeviceOrientationNotifications) {
   [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
 }
if([[UIDevice currentDevice] orientation] == UIDeviceOrientationPortrait){
    NSLog(@"當(dāng)前設(shè)備是垂直豎向哮肚,并且home鍵在下方");
}
[[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];

2.獲取設(shè)備電池狀態(tài)

typedef NS_ENUM(NSInteger, UIDeviceBatteryState) {
    UIDeviceBatteryStateUnknown,
    UIDeviceBatteryStateUnplugged,   // 未充電,使用電池
    UIDeviceBatteryStateCharging,    // 充電中,并且電量小于 100%
    UIDeviceBatteryStateFull,        // 充電中, 電量已達 100%
} __TVOS_PROHIBITED;              // TVOS不可用鲁纠,iOS3之后可用

判斷當(dāng)前設(shè)備電池狀態(tài)

[UIDevice currentDevice].batteryMonitoringEnabled = YES; //開啟電量監(jiān)控情龄,默認(rèn)不開啟
if ([[UIDevice currentDevice] batteryState] == UIDeviceBatteryStateCharging){
    NSLog(@"正在充電中,且電量不足100");
}
//當(dāng)前電量,小數(shù)[0,1] ,如果[[UIDevice currentDevice] batteryState] == UIDeviceBatteryStateUnknown時专酗,則為1.0
NSLog(@"當(dāng)前電量%f",[[UIDevice currentDevice] batteryLevel]);

3.獲取設(shè)備類型

typedef NS_ENUM(NSInteger, UIUserInterfaceIdiom) {
    UIUserInterfaceIdiomUnspecified = -1,
    UIUserInterfaceIdiomPhone NS_ENUM_AVAILABLE_IOS(3_2), // 0,iPhone and iPod touch style UI
    UIUserInterfaceIdiomPad NS_ENUM_AVAILABLE_IOS(3_2), // 1,iPad style UI
    UIUserInterfaceIdiomTV NS_ENUM_AVAILABLE_IOS(9_0), // 2,Apple TV style UI
    UIUserInterfaceIdiomCarPlay NS_ENUM_AVAILABLE_IOS(9_0), //3, CarPlay style UI
};
NSLog(@"%ld",(long)[UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone) //判斷是否為iPhone或者iPod

4.修改某個界面的橫豎屏狀態(tài)

上述方法只能獲取設(shè)備的當(dāng)前屏幕狀態(tài),不能修改佑笋,如果想要修改蒋纬,請參考下面的方法
iOS6之前

// Applications should use supportedInterfaceOrientations and/or shouldAutorotate..
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation NS_DEPRECATED_IOS(2_0, 6_0) __TVOS_PROHIBITED;

示例

//始終保持豎屏
- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
    return (toInterfaceOrientation == UIInterfaceOrientationPortrait);
}

iOS6之后

//是否支持旋轉(zhuǎn)
- (BOOL)shouldAutorotate NS_AVAILABLE_IOS(6_0) __TVOS_PROHIBITED;
//支持的旋轉(zhuǎn)方向
- (UIInterfaceOrientationMask)supportedInterfaceOrientations NS_AVAILABLE_IOS(6_0) __TVOS_PROHIBITED;
  • 全部界面采用同一種
    如果window.rootViewController是UINavigationViewController的話关摇,只要在導(dǎo)航控制器中設(shè)置完畢之后,所有push出來的viewController脂凶,都是和NavigationViewController一樣
- (BOOL)shouldAutorotate {
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskPortrait;
}
  • 多個界面,采用各自的屏幕需求冠桃,在NavigationViewController中實現(xiàn)下面的方法食听,指定每個ViewController按照自己的需求改變,在ViewController中覆寫此方法
- (BOOL)shouldAutorotate {
    if (self.topViewController != nil) return [self.topViewController shouldAutorotate];
    else return [super shouldAutorotate];
}

- (NSUInteger)supportedInterfaceOrientations {
    if (self.topViewController != nil) return [self.topViewController supportedInterfaceOrientations];
    else return [super supportedInterfaceOrientations];
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市嚷量,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌抖所,老刑警劉巖田轧,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異有序,居然都是意外死亡旭寿,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進店門肩祥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人混狠,你說我怎么就攤上這事疾层。” “怎么了痛黎?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵湖饱,是天一觀的道長。 經(jīng)常有香客問我井厌,道長致讥,這世上最難降的妖魔是什么彪置? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任拳魁,我火速辦了婚禮,結(jié)果婚禮上潘懊,老公的妹妹穿的比我還像新娘。我一直安慰自己授舟,他們只是感情好释树,可當(dāng)我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著奢啥,像睡著了一般寂纪。 火紅的嫁衣襯著肌膚如雪赌结。 梳的紋絲不亂的頭發(fā)上量承,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天,我揣著相機與錄音宴合,去河邊找鬼斜棚。 笑死阀蒂,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蚤霞。 我是一名探鬼主播,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼规肴,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了拖刃?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤兑牡,失蹤者是張志新(化名)和其女友劉穎税灌,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體菱涤,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年墩朦,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片氓涣。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡陋气,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出巩趁,到底是詐尸還是另有隱情,我是刑警寧澤议慰,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站别凹,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏炉菲。R本人自食惡果不足惜坤溃,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一嘱丢、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧越驻,春花似錦、人聲如沸伐谈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至履澳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間距贷,已是汗流浹背柄冲。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工现横, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人戒祠。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓速种,卻偏偏與公主長得像,于是被迫代替她去往敵國和親配阵。 傳聞我的和親對象是個殘疾皇子馏颂,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,652評論 2 354

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

  • 大三的生活太無聊壹无,我做了一份補課班老師的兼職工作感帅,我?guī)У牧昙壍陌嗉墸袃蓚€小學(xué)生被其他學(xué)生稱之為“情侶”失球,他們很...
    荔枝阿姨閱讀 695評論 0 3
  • | 路人 | 二菟 你對我微笑 我以微笑回你 你對我敵視 我亦以微笑回你 我們生來就是路人 可以一見如故...
    二菟閱讀 109評論 0 0