iPhone 12系列又要適配劉海屏了?

現(xiàn)在iPhone系列的手機(jī)官方在售機(jī)型中,除iPhone SE 2全是是FaceID系列了(劉海屏),如今iPhone 12因為疫情原因,來的雖然比往年晚了點(diǎn),但是它還是強(qiáng)勢來襲,各大機(jī)構(gòu)報告、評測層出不窮,又會有多少“真香”定律呢?
這,與本文無關(guān),今天要看看iPhone 12系列是否又要迭代適配代碼了呢?

判斷長寬比方式

為了研究這個,前往APP預(yù)覽規(guī)范 整理出以下表格

各iPhone長寬比

有譜了,那按這個就有了以下的方式去識別是否是FaceID的iPhone了

+ (BOOL)isFaceIDSeriecsiPhone
{
    if (UIDevice.currentDevice.userInterfaceIdiom != UIUserInterfaceIdiomPhone) {
        NSLog(@"This not is iPhone! ");
        return NO; 
    }
    CGSize size = [UIScreen mainScreen].bounds.size;
    NSInteger value = size.width / size.height * 100;
    if (value == 216 || value ==  46) {
       return YES;
    }
    return NO;
}

雖然表格數(shù)值是217這是Excel四舍五入,但乘了100,再NSInteger取整的,取216即可。也不知道明年的iPhone是什么屏比,這個方式也不是一勞永逸,出了新的迭代再改,APP一年都不更新,那離下架也不遠(yuǎn)了(皮一下)。

判斷底部安全區(qū)域

另一個方法是先判斷系統(tǒng)版本,再獲取UIWindow判斷底部安全區(qū)域,形式,有些是獲取
[UIApplication sharedApplication].delegate.window;、[UIApplication sharedApplication].keyWindow;這個在iOS 13之后不可用了。那就從windows

+ (BOOL)isFaceIDSeriecsiPhone
{
    if (UIDevice.currentDevice.userInterfaceIdiom != UIUserInterfaceIdiomPhone) {
        NSLog(@"This not is iPhone! ");
        return NO; 
    }
    if (@available(iOS 11.0, *)) {
        UIWindow * window =  [self mainWindow];
        // 判斷安全區(qū)域方式
        if (window.safeAreaInsets.bottom > 0.0) {
            return YES;
        }
    }
    return NO;
}
+(UIWindow *)mainWindow{
    id appDelegate = [UIApplication sharedApplication].delegate;
    if (appDelegate && [appDelegate respondsToSelector:@selector(window)]) {
        return [appDelegate window];
    }
    NSArray *windows = [UIApplication sharedApplication].windows;
    if ([windows count] == 1) {
        return [windows firstObject];
    } else {
        for (UIWindow *window in windows) {
            if (window.windowLevel == UIWindowLevelNormal) {
                return window;
            }
        }
    }
    return nil;
}

safeAreaInsets
豎屏:UIEdgeInsets -> (top = 44, left = 0, bottom = 34, right = 0)
橫屏:UIEdgeInsets -> (top = 0, left = 44, bottom = 21, right = 44)

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

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