iOS13 暗黑模式(淺色 & 深色)

iOS13出來后有個(gè)暗黑模式弄息,需要適配箭券,調(diào)研了一番,終于解決了疑枯,廢話不說辩块,先看是如何搞定的。

- (void)viewDidLoad {
    [super viewDidLoad];
    
    if (@available(iOS 13.0, *)) {
        self.view.backgroundColor = [UIColor colorWithDynamicProvider:^UIColor * _Nonnull(UITraitCollection * _Nonnull traitCollection) {
            if ( traitCollection.userInterfaceStyle == UIUserInterfaceStyleLight ) {    //淺色
                return [UIColor redColor];
            }
            else if ( traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark ) {  // 深色
                return [UIColor blueColor];
            }
            else {
                return [UIColor yellowColor];
            }
        }];
    } else {
          
    }
}

這里發(fā)現(xiàn)有個(gè)UITraitCollection類荆永,之前沒有研究過這個(gè)類废亭,就跳轉(zhuǎn)到API進(jìn)去看看。這里大致總結(jié)一哈

userInterfaceIdiom:判斷當(dāng)前設(shè)備是 iPhone/iPad/tv/carPlay 的哪種

@property (nonatomic, readonly) UIUserInterfaceIdiom userInterfaceIdiom; // unspecified: UIUserInterfaceIdiomUnspecified

typedef NS_ENUM(NSInteger, UIUserInterfaceIdiom) {
    UIUserInterfaceIdiomUnspecified = -1,
    UIUserInterfaceIdiomPhone API_AVAILABLE(ios(3.2)), // iPhone and iPod touch style UI
    UIUserInterfaceIdiomPad API_AVAILABLE(ios(3.2)), // iPad style UI
    UIUserInterfaceIdiomTV API_AVAILABLE(ios(9.0)), // Apple TV style UI
    UIUserInterfaceIdiomCarPlay API_AVAILABLE(ios(9.0)), // CarPlay style UI
};

userInterfaceStyle:顯示也亮度中外觀的配置信息

@property (nonatomic, readonly) UIUserInterfaceStyle userInterfaceStyle API_AVAILABLE(tvos(10.0)) API_AVAILABLE(ios(12.0)) API_UNAVAILABLE(watchos); // unspecified: UIUserInterfaceStyleUnspecified

typedef NS_ENUM(NSInteger, UIUserInterfaceStyle) {
    UIUserInterfaceStyleUnspecified,
    UIUserInterfaceStyleLight,
    UIUserInterfaceStyleDark,
} API_AVAILABLE(tvos(10.0)) API_AVAILABLE(ios(12.0)) API_UNAVAILABLE(watchos);

layoutDirection:布局方向的配置信息

@property (nonatomic, readonly) UITraitEnvironmentLayoutDirection layoutDirection API_AVAILABLE(ios(10.0)); // unspecified: UITraitEnvironmentLayoutDirectionUnspecified

typedef NS_ENUM(NSInteger, UITraitEnvironmentLayoutDirection) {
    UITraitEnvironmentLayoutDirectionUnspecified = -1,
    UITraitEnvironmentLayoutDirectionLeftToRight = UIUserInterfaceLayoutDirectionLeftToRight,
    UITraitEnvironmentLayoutDirectionRightToLeft = UIUserInterfaceLayoutDirectionRightToLeft,
} API_AVAILABLE(ios(10.0));

displayScale:圖片scale的配置信息

@property (nonatomic, readonly) CGFloat displayScale; // unspecified: 0.0

horizontalSizeClass:布局Size Class的配置

@property (nonatomic, readonly) UIUserInterfaceSizeClass horizontalSizeClass; // unspecified:

@property (nonatomic, readonly) UIUserInterfaceSizeClass verticalSizeClass; // unspecified: UIUserInterfaceSizeClassUnspecified

typedef NS_ENUM(NSInteger, UIUserInterfaceSizeClass) {
    UIUserInterfaceSizeClassUnspecified = 0,
    UIUserInterfaceSizeClassCompact     = 1,
    UIUserInterfaceSizeClassRegular     = 2,
} API_AVAILABLE(ios(8.0));

forceTouchCapability:forceTouch是否可用的配置

@property (nonatomic, readonly) UIForceTouchCapability forceTouchCapability API_AVAILABLE(ios(9.0)); // unspecified: UIForceTouchCapabilityUnknown

typedef NS_ENUM(NSInteger, UIForceTouchCapability) {
    UIForceTouchCapabilityUnknown = 0,
    UIForceTouchCapabilityUnavailable = 1,
    UIForceTouchCapabilityAvailable = 2
};

preferredContentSizeCategory:全局字體大小的配置

@property (nonatomic, copy, readonly) UIContentSizeCategory preferredContentSizeCategory API_AVAILABLE(ios(10.0)); // unspecified: UIContentSizeCategoryUnspecified

typedef NSString * UIContentSizeCategory NS_TYPED_ENUM API_AVAILABLE(ios(7.0));

// Content size category constants

UIKIT_EXTERN UIContentSizeCategory const UIContentSizeCategoryUnspecified API_AVAILABLE(ios(10.0));
UIKIT_EXTERN UIContentSizeCategory const UIContentSizeCategoryExtraSmall API_AVAILABLE(ios(7.0));
UIKIT_EXTERN UIContentSizeCategory const UIContentSizeCategorySmall API_AVAILABLE(ios(7.0));
UIKIT_EXTERN UIContentSizeCategory const UIContentSizeCategoryMedium API_AVAILABLE(ios(7.0));
UIKIT_EXTERN UIContentSizeCategory const UIContentSizeCategoryLarge API_AVAILABLE(ios(7.0));
UIKIT_EXTERN UIContentSizeCategory const UIContentSizeCategoryExtraLarge API_AVAILABLE(ios(7.0));
UIKIT_EXTERN UIContentSizeCategory const UIContentSizeCategoryExtraExtraLarge API_AVAILABLE(ios(7.0));
UIKIT_EXTERN UIContentSizeCategory const UIContentSizeCategoryExtraExtraExtraLarge API_AVAILABLE(ios(7.0));

// Accessibility sizes
UIKIT_EXTERN UIContentSizeCategory const UIContentSizeCategoryAccessibilityMedium API_AVAILABLE(ios(7.0));
UIKIT_EXTERN UIContentSizeCategory const UIContentSizeCategoryAccessibilityLarge API_AVAILABLE(ios(7.0));
UIKIT_EXTERN UIContentSizeCategory const UIContentSizeCategoryAccessibilityExtraLarge API_AVAILABLE(ios(7.0));
UIKIT_EXTERN UIContentSizeCategory const UIContentSizeCategoryAccessibilityExtraExtraLarge API_AVAILABLE(ios(7.0));
UIKIT_EXTERN UIContentSizeCategory const UIContentSizeCategoryAccessibilityExtraExtraExtraLarge API_AVAILABLE(ios(7.0));

displayGamut:色域的配置

@property (nonatomic, readonly) UIDisplayGamut displayGamut API_AVAILABLE(ios(10.0)); // unspecified: UIDisplayGamutUnspecified

typedef NS_ENUM(NSInteger, UIDisplayGamut) {
    UIDisplayGamutUnspecified = -1, // UIKit will not set this anymore, instead a sensible default is chosen based on the device capabilities and settings always
    UIDisplayGamutSRGB,
    UIDisplayGamutP3
} API_AVAILABLE(ios(10.0));

accessibilityContrast:是否開啟高對(duì)比度的配置

@property (nonatomic, readonly) UIAccessibilityContrast accessibilityContrast API_AVAILABLE(ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos); // unspecified: UIAccessibilityContrastUnspecified

typedef NS_ENUM(NSInteger, UIAccessibilityContrast) {
    UIAccessibilityContrastUnspecified = -1,
    UIAccessibilityContrastNormal,
    UIAccessibilityContrastHigh,
} API_AVAILABLE(ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos);

userInterfaceLevel:指示窗口中內(nèi)容的可視級(jí)別

@property (nonatomic, readonly) UIUserInterfaceLevel userInterfaceLevel API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(watchos); // unspecified: UIUserInterfaceLevelUnspecified

typedef NS_ENUM(NSInteger, UIUserInterfaceLevel) {
    UIUserInterfaceLevelUnspecified = -1,
    UIUserInterfaceLevelBase,
    UIUserInterfaceLevelElevated
} API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(watchos);

legibilityWeight:全局字重的配置

@property (nonatomic, readonly) UILegibilityWeight legibilityWeight API_AVAILABLE(ios(13.0), tvos(13.0), watchos(6.0)); // unspecified: UILegibilityWeightUnspecified

typedef NS_ENUM(NSInteger, UILegibilityWeight) {
    UILegibilityWeightUnspecified = -1,
    UILegibilityWeightRegular,
    UILegibilityWeightBold
} API_AVAILABLE(ios(13.0), tvos(13.0), watchos(6.0));

如何獲取全局的UITraitCollection

[UITraitCollection currentTraitCollection];

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末具钥,一起剝皮案震驚了整個(gè)濱河市豆村,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌骂删,老刑警劉巖掌动,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異宁玫,居然都是意外死亡粗恢,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門欧瘪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來眷射,“玉大人,你說我怎么就攤上這事⊙铮” “怎么了涌庭?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)欧宜。 經(jīng)常有香客問我坐榆,道長(zhǎng),這世上最難降的妖魔是什么冗茸? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任猛拴,我火速辦了婚禮,結(jié)果婚禮上蚀狰,老公的妹妹穿的比我還像新娘。我一直安慰自己职员,他們只是感情好麻蹋,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著焊切,像睡著了一般扮授。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上专肪,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天刹勃,我揣著相機(jī)與錄音,去河邊找鬼嚎尤。 笑死荔仁,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的芽死。 我是一名探鬼主播乏梁,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼关贵!你這毒婦竟也來了遇骑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤揖曾,失蹤者是張志新(化名)和其女友劉穎落萎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體炭剪,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡练链,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了奴拦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片兑宇。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出隶糕,到底是詐尸還是另有隱情瓷产,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布枚驻,位于F島的核電站濒旦,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏再登。R本人自食惡果不足惜尔邓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望锉矢。 院中可真熱鬧梯嗽,春花似錦、人聲如沸沽损。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绵估。三九已至炎疆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間国裳,已是汗流浹背形入。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留缝左,地道東北人亿遂。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像渺杉,于是被迫代替她去往敵國(guó)和親崩掘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

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

  • 收錄:原文地址 先說問題 最近在適配iOS13 有個(gè)Dark Mode的暗黑模式, 為了適配這個(gè)模式不得不在UIV...
    iOS猿_員閱讀 3,910評(píng)論 4 5
  • 蘋果全球開發(fā)者大會(huì) (英文全稱是“Worldwide Developers Conference”)少办,簡(jiǎn)稱為“WW...
    Coder_JMicheal閱讀 3,259評(píng)論 4 11
  • 我們聽到的看到的最多的說法苞慢,是要在我們平淡的生活中,不要忘記自己的夢(mèng)想英妓,不要忘記初心挽放,要為夢(mèng)想努力奮斗,讓夢(mèng)想照亮...
    桑葉青青923閱讀 596評(píng)論 0 4
  • 清晨的風(fēng) 夾帶著暖流 吹過草叢 露出一片晶瑩 穿過樹蔭 帶來沙沙低語 掠過水面 泛起道道微波 拂過伊人的發(fā)梢 任它...
    夏與清風(fēng)閱讀 252評(píng)論 2 5
  • 股市的掙錢方法有很多蔓纠,每個(gè)人都有自己不同的思路和絕招辑畦。今天,我就跟大家聊聊腿倚,我走過的路纯出,供各位參考,如果你走的是我...
    炒股牛閱讀 171評(píng)論 0 0