非啊吗 發表於 2020-10-14 09:59:00

iOS开发之适配判断刘海屏幕

<p>我们在开发中为了适配iPhoneX之后的刘海屏幕,经常得加上各种判断,每年苹果除了新的机型之后可能又得修改</p>
<p>所以给大家介绍一个通用的方法</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">#define</span> kIsBangsScreen ({\<span style="color: rgba(0, 0, 0, 1)">
    BOOL isBangsScreen </span>=<span style="color: rgba(0, 0, 0, 1)"> NO; \
    </span><span style="color: rgba(0, 0, 255, 1)">if</span> (@available(iOS <span style="color: rgba(128, 0, 128, 1)">11.0</span>, *<span style="color: rgba(0, 0, 0, 1)">)) { \
    UIWindow </span>*window =<span style="color: rgba(0, 0, 0, 1)"> [.windows firstObject]; \
    isBangsScreen </span>= window.safeAreaInsets.bottom &gt; <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">; \
    } \
    isBangsScreen; \
})</span></pre>
</div>
<p>在这里之所以使用&nbsp;<code>windows</code>&nbsp;是因为,<code>keyWindow</code>、<code>delegate.window</code>有时候会获取不到,为<code>null</code></p>
<p>&nbsp;</p>
<p>下面这种也还是可以的</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">#define</span> isIphoneX ({\<span style="color: rgba(0, 0, 0, 1)">
BOOL isPhoneX </span>=<span style="color: rgba(0, 0, 0, 1)"> NO;\
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (@available(iOS <span style="color: rgba(128, 0, 128, 1)">11.0</span>, *<span style="color: rgba(0, 0, 0, 1)">)) {\
    </span><span style="color: rgba(0, 0, 255, 1)">if</span> (!UIEdgeInsetsEqualToEdgeInsets(.<span style="color: rgba(0, 0, 255, 1)">delegate</span><span style="color: rgba(0, 0, 0, 1)">.window.safeAreaInsets, UIEdgeInsetsZero)) {\
    isPhoneX </span>=<span style="color: rgba(0, 0, 0, 1)"> YES;\
    }\
}\
isPhoneX;\
})</span></pre>
</div>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/hecanlin/p/13813175.html
頁: [1]
查看完整版本: iOS开发之适配判断刘海屏幕