iPhone X navigation適配

前兩天iOS11正式版的推送隨之而來(lái)的是Xcode9,今年Apple搞十周年多推送一款手機(jī)--iPhoneX,雖未上市,但是這種手機(jī)屏幕對(duì)于我們開(kāi)發(fā)者來(lái)說(shuō)就有點(diǎn)不和諧了。隨著模擬器iPhone X出現(xiàn),適配勢(shì)在必行了。不多說(shuō)了,講點(diǎn)實(shí)際的。
手頭項(xiàng)目一運(yùn)行沒(méi)有自定義navigation的地方很好,沒(méi)啥問(wèn)題但是涉及到自定義navigation的時(shí)候問(wèn)題就來(lái)了,平時(shí)喜歡隨便寫(xiě)個(gè)64的人悲劇了,我倒是平時(shí)習(xí)慣好點(diǎn)(但也只是好一點(diǎn)點(diǎn),放在PCH文件中統(tǒng)一管理)

修改前

于是只要稍稍改一下

修改后

我特地把這些常用的放在公共的地方

//界面上面適配主要是iPhone X的狀態(tài)欄高度是44而正常是20和tabbar的高度是83(多了34),而正常的高度是49
#define StatusRectH [[UIApplication sharedApplication] statusBarFrame].size.height//狀態(tài)欄
#define NavRectH self.navigationController.navigationBar.frame.size.height////標(biāo)題欄還是44
//navi總高度(非控制器專(zhuān)用)
#define NavH_view [DRFunctionUnit getNavVC].navigationBar.frame.size.height + StatusRectH
#define VHeight (SCREEN_HEIGHT - StatusRectH - NavRectH)
#define CURRENT_SIZE(_size) _size / 320.0 * SCREEN_WIDTH
#define NavH (StatusRectH + NavRectH)
#define TabH (kDevice_Is_iPhoneX?83.f:49.f)
#define TabbarHeight (kDevice_Is_iPhoneX?83.f:49.f)
#define TabSaveHeight (kDevice_Is_iPhoneX?34.f:0)
#define kDevice_Is_iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)

眼睛尖的肯定看到了我寫(xiě)了個(gè)非控制器專(zhuān)用的navi的高度,這個(gè)主要是應(yīng)對(duì)那些你需要在項(xiàng)目中做彈出視圖(單獨(dú)拆分出來(lái))的地方用到關(guān)于系統(tǒng)的高度,那個(gè)里面可沒(méi)有navigation,但你還是要除掉他的高度,寫(xiě)個(gè)系統(tǒng)方法就好了

@implementation DRFunctionUnit
+ (UINavigationController *)getNavVC{
    UIViewController * Rootvc = [[UIApplication sharedApplication] keyWindow].rootViewController;
    UITabBarController * tabVC = (UITabBarController *)Rootvc;
    UINavigationController *nav = (UINavigationController*)tabVC.selectedViewController;    
    return nav;
}
//scrollView相關(guān)iOS11適配
#define  adjustsScrollViewInsets(scrollView)\
do {\
_Pragma("clang diagnostic push")\
_Pragma("clang diagnostic ignored \"-Warc-performSelector-leaks\"")\
if ([scrollView respondsToSelector:NSSelectorFromString(@"setContentInsetAdjustmentBehavior:")]) {\
NSMethodSignature *signature = [UIScrollView instanceMethodSignatureForSelector:@selector(setContentInsetAdjustmentBehavior:)];\
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];\
NSInteger argument = 2;\
invocation.target = scrollView;\
invocation.selector = @selector(setContentInsetAdjustmentBehavior:);\
[invocation setArgument:&argument atIndex:2];\
[invocation retainArguments];\
[invocation invoke];\
}\
_Pragma("clang diagnostic pop")\
} while (0)

沙漠騎士

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容