ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ios 深色模式

2021-10-08 17:00:08  阅读:210  来源: 互联网

标签:深色 颜色 light ios 模式 UIColor 语义


深色模式

从iOS 13开始,用户克在系统级别把外观修改深色模式。深色模式与传统浅色模式相比,有以下优点

  • 由于减少发光,使用深色模式能大幅减少电量的消耗,延长 iPhone 的续航能力;

  • 对视力不佳或者与对强光敏感的用户更为友好,为他们提供更好的可视性;

  • 在暗光环境下,让用户使用手机时更舒服

那么如何让我们的app支持深色模式呢?

ios语义色号

对于深色模式的支持,苹果推荐使用语义话颜色来进行适配。
什么是语义色呢?
语义色是我们根据用途定义颜色的名字,如使用背景上的颜色定义为backgroundColor,文本和富文本颜色分别定义为primaryTextColor,secondaryTextColor.UI可以通过语义色来灵活适配用户选择的外观模式。如深色模式下颜色为白色或其他亮色,浅色模式下为黑色等。

为了简化深色模式的适配过程,苹果提供了具有语义的系统色(System colors)和动态系统色(Dynamic System colors)供我们使用,可通过官方文档查看
系统颜色
在这里插入图片描述
上图是苹果开发者文档提供的一个系统色,他们在浅色模式和深色模式下RGB会有不同的值,这样就能保证在不同的外观模式下颜色都能清晰的显示

在这里插入图片描述
上图显示的是ios系统提供的动态系统色的定义。他们通过用途来定义各种颜色的名称。如label用于主标签的颜色,而Secondary label用于副标签的文字颜色,使用他们就能自动支持不同颜色的外观模式了。

自定义语义色

虽然苹果提供了很多系统、动态颜色,但通常公司设计都会有一套自己的设计规则和颜色体系。关使用苹果提供的颜色是不够的。下面就是为我们自己定义一套语义色;
可通过UITraitCollection类获取到当前对象,获得当前颜色模式动态使用颜色,为方便使用,定义如下方法

static private func dynamicColor(light:UIColor,dark:UIColor)->UIColor{

            return UIColor { collection in
                return collection.userInterfaceStyle == .light ? light : dark
            }
        }

扩展类如下



import UIKit
public extension UIColor {
    static let colorPalette = ColorPalette.self
    enum ColorPalette {

        public static let primaryTextColor: UIColor = dynamicColor(light: UIColor(hex: 0x0770e3), dark: UIColor(hex: 0x6d9feb))
        public static let backgroundColor: UIColor = dynamicColor(light: .white, dark: .black)

        static private func dynamicColor(light:UIColor,dark:UIColor)->UIColor{

            return UIColor { collection in
                return collection.userInterfaceStyle == .light ? light : dark
            }
        }
    }
}
public extension UIColor {
    convenience init(hex: Int) {
        let components = (
                R: CGFloat((hex >> 16) & 0xff) / 255,
                G: CGFloat((hex >> 08) & 0xff) / 255,
                B: CGFloat((hex >> 00) & 0xff) / 255
        )
        self.init(red: components.R, green: components.G, blue: components.B, alpha: 1)
    }
}

标签:深色,颜色,light,ios,模式,UIColor,语义
来源: https://blog.csdn.net/fengyuyxz/article/details/120653873

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有