欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來(lái)到入門(mén)教程網(wǎng)!

IOS

當(dāng)前位置:主頁(yè) > 軟件編程 > IOS >

淺談iOS開(kāi)發(fā)如何適配暗黑模式(Dark Mode)

來(lái)源:本站原創(chuàng)|時(shí)間:2020-01-11|欄目:IOS|點(diǎn)擊: 次

暗黑模式

原理

  1. 將同一個(gè)資源,創(chuàng)建出兩種模式的樣式。系統(tǒng)根據(jù)當(dāng)前選擇的樣式,自動(dòng)獲取該樣式的資源
  2. 每次系統(tǒng)更新樣式時(shí),應(yīng)用會(huì)調(diào)用當(dāng)前所有存在的元素調(diào)用對(duì)應(yīng)的一些重新方法,進(jìn)行重繪視圖,可以在對(duì)應(yīng)的方法做相應(yīng)的改動(dòng)

資源文件適配

  1. 創(chuàng)建一個(gè)Assets文件(或在現(xiàn)有的Assets文件中)
  2. 新建一個(gè)圖片資源文件(或者顏色資源文件、或者其他資源文件)
  3. 選中該資源文件, 打開(kāi) Xcode ->View ->Inspectors ->Show Attributes Inspectors (或者Option+Command+4)視圖,將Apperances 選項(xiàng) 改為Any,Dark
  4. 執(zhí)行完第三步,資源文件將會(huì)有多個(gè)容器框,分別為 Any Apperance 和 Dark Apperance. Any Apperance 應(yīng)用于默認(rèn)情況(Unspecified)與高亮情況(Light), Dark Apperance 應(yīng)用于暗黑模式(Dark)
  5. 代碼默認(rèn)執(zhí)行時(shí),就可以正常通過(guò)名字使用了,系統(tǒng)會(huì)根據(jù)當(dāng)前模式自動(dòng)獲取對(duì)應(yīng)的資源文件

注意

同一工程內(nèi)多個(gè)Assets文件在打包后,就會(huì)生成一個(gè)Assets.car 文件,所以要保證Assets內(nèi)資源文件的名字不能相同

如何在代碼里進(jìn)行適配顏色(UIColor)

+ (UIColor *)colorWithDynamicProvider:(UIColor * (^)(UITraitCollection *))dynamicProvider API_AVAILABLE(ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos);
- (UIColor *)initWithDynamicProvider:(UIColor * (^)(UITraitCollection *))dynamicProvider API_AVAILABLE(ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos);

e.g.

[UIColor colorWithDynamicProvider:^UIColor * _Nonnull(UITraitCollection * _Nonnull trait) {
  if (trait.userInterfaceStyle == UIUserInterfaceStyleDark) {
    return UIColorRGB(0x000000);
  } else {
    return UIColorRGB(0xFFFFFF);
  }
 }];

系統(tǒng)調(diào)用更新方法,自定義重繪視圖

當(dāng)用戶更改外觀時(shí),系統(tǒng)會(huì)通知所有window與View需要更新樣式,在此過(guò)程中iOS會(huì)觸發(fā)以下方法, 完整的觸發(fā)方法文檔

UIView

traitCollectionDidChange(_:)
layoutSubviews()
draw(_:)
updateConstraints()
tintColorDidChange()

UIViewController

traitCollectionDidChange(_:)
updateViewConstraints()
viewWillLayoutSubviews()
viewDidLayoutSubviews()

UIPresentationController

traitCollectionDidChange(_:)
containerViewWillLayoutSubviews()
containerViewDidLayoutSubviews()

如何不進(jìn)行系統(tǒng)切換樣式的適配

注意

蘋(píng)果官方強(qiáng)烈建議適配 暗黑模式(Dark Mode)此功能也是為了開(kāi)發(fā)者能慢慢將應(yīng)用適配暗黑模式

所以想通過(guò)此功能不進(jìn)行適配暗黑模式,預(yù)計(jì)將會(huì)被拒

全局關(guān)閉暗黑模式

  1. 在Info.plist 文件中,添加UIUserInterfaceStyle key 名字為 User Interface Style 值為String,
  2. 將UIUserInterfaceStyle key 的值設(shè)置為 Light

單個(gè)界面不遵循暗黑模式

  1. UIViewController與UIView 都新增一個(gè)屬性 overrideUserInterfaceStyle
  2. 將 overrideUserInterfaceStyle 設(shè)置為對(duì)應(yīng)的模式,則強(qiáng)制限制該元素與其子元素以設(shè)置的模式進(jìn)行展示,不跟隨系統(tǒng)模式改變進(jìn)行改變
    1. 設(shè)置 ViewController 的該屬性, 將會(huì)影響視圖控制器的視圖和子視圖控制器采用該樣式
    2. 設(shè)置 View 的該屬性, 將會(huì)影響視圖及其所有子視圖采用該樣式
    3. 設(shè)置 Window 的該屬性, 將會(huì)影響窗口中的所有內(nèi)容都采用樣式,包括根視圖控制器和在該窗口中顯示內(nèi)容的所有演示控制器(UIPresentationController)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。

網(wǎng)頁(yè)制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語(yǔ)言數(shù)據(jù)庫(kù)服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有