精华内容
下载资源
问答
  • 如下图所示: 课程内容与收益: 总的来说,本课程是一门具有很强实践性质的“项目实战”课程,即“企业应用员工角色权限管理平台”,主要介绍了当前企业级应用系统中员工、部门、岗位、角色、权限、菜单以及其他实体...
  • [使用教程] vi编辑器不显示当前状态

    千次阅读 2017-09-18 15:37:55
    问题刚开始使用vi编写代码时,发现按了i键之后,虽然可以正常编辑,但是左下方并没有显示--INSERT--。 找了很久,才发现是ubuntu默认安装的vim没有完全安装。不过自己设置以下也可以,不影响基本使用。解决方法再...

    问题

    刚开始使用vi编写代码时,发现按了i键之后,虽然可以正常编辑,但是左下方并没有显示--INSERT--
    找了很久,才发现是ubuntu默认安装的vim没有完全安装。不过自己设置以下也可以,不影响基本使用。

    解决方法

    一般模式下,按‘:’进入命令行模式。输入‘set showmode’即可。

    展开全文
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    该命令包括了将带有当前工作目录当作该光盘中的目录的终端窗口。 chsh 1.作用 chsh命令的作用是更改使用者shell设定,它的使用权限是所有使用者。 2.格式 chsh [ -s ] [ -list] [ --help ] [ -v ] [ ...
  • Linux

    千次阅读 多人点赞 2020-02-11 21:22:11
    用法 ls 显示当前目录下的内容 ls -a 显示当前目录下的所有文件(包含隐藏的文件) ls -l(简写为 ll) 显示当前目录下的详细信息 5.2 切换目录命令 cd 作用 cd 命令用于切换当前工作目录至 dirName(目录参数)。...

    1. Linux 介绍

    1.1 Linux 简介

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    1.2 Linux 历史

    Linux 最初是由芬兰赫尔辛基大学学生 Linus Torvalds 由于自己不满意教学中使用的 MINIX 操作系统, 所以在 1990 年底由于个人爱好设计出了 LINUX 系统核心。后来发布于芬兰最大的 FTP 服务器上,用户可以免费下载,所以它的周边的程序越来越多,Linux 本身也逐渐发展壮大起来,之后 Linux 在不到三年的时间里成为了一个功能完善,稳定可靠的操作系统。

    1.3 Linux 版本

    Linux的版本分为两种:

    1. 内核版本:内核版本是指在 Linus 领导下的内核小组开发维护的系统内核的版本号
    2. 发行版本:发行版本是一些组织和公司根据自己发行版的不同而自定的,但他们都使用了 Linux 内核

    主流的发行版本有:

    在这里插入图片描述

    2. Linux 安装

    2.1 安装虚拟机

    1. 下载 VMware Workstation

      https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html
      
    2. 安装 VMware Workstation

      在这里插入图片描述

    2.2 安装 CentOS

    1. 下载 CentOS 镜像

      https://www.centos.org/download/
      
    2. 打开 VMware Workstation --> 创建新的虚拟机

      在这里插入图片描述

    3. 选择下载的 CentOS 映像文件

      在这里插入图片描述

    4. 配置用户名和密码

      在这里插入图片描述

    5. 设置虚拟机保存路径

      在这里插入图片描述

    6. 设置最大磁盘大小

      在这里插入图片描述

    7. 准备创建 CentOS

      在这里插入图片描述

    8. 成功安装 CentOS

      在这里插入图片描述

    3. 远程操作 Linux

    3.1 SecureCRT 介绍

    SecureCRT 是一款支持 SSH 的终端仿真程序,简单地说是 Windows 下登录 UNIX 或 Linux 服务器主机的软件。

    3.2 SecureCRT 登录 Linux

    1. 在 CentOS 中打开 Terminal,输入命令(显示网络设备)

      ifconfig
      

      这样我们就得到了虚拟机的 ip 地址:

      在这里插入图片描述

    2. 打开 SecureCRT,输入刚才得到的 ip 地址,连接

      在这里插入图片描述

    3. 以 root 用户登录

      在这里插入图片描述

    4. 登陆成功

      在这里插入图片描述

    4. Linux 的目录结构

    在这里插入图片描述

    5. Linux 常用命令

    5.1 列出文件列表 ls

    作用

    ls 用来显示当前目录下的内容。配合参数的使用,能以不同的方式显示目录内容。

    用法

    • ls 显示当前目录下的内容
    • ls -a 显示当前目录下的所有文件(包含隐藏的文件)
    • ls -l(简写为 ll) 显示当前目录下的详细信息

    5.2 切换目录命令 cd

    作用

    cd 命令用于切换当前工作目录至 dirName(目录参数)。

    用法

    • cd dirName 切换到 dirName 目录
    • cd … 切换到上一层目录
    • cd / 切换到系统根目录
    • cd ~ 切换到用户主目录
    • cd - 切换到上一个所在目录

    5.3 目录操作

    5.3.1 创建目录 mkdir

    作用

    mkdir 命令可用来创建子目录。

    用法

    • mkdir AAA 在工作目录下,建立一个名为 AAA 的子目录
    • mkdir -p BBB/Test 在工作目录下的 BBB 目录中,建立一个名为 Test 的子目录。 若 BBB 目录原本不存在,则建立一个。

    5.3.2 删除目录 rmdir

    作用

    rmdir 命令删除空的目录。

    不同参数

    • redir AAA 将工作目录下,名为 AAA 的子目录删除

    • rmdir -p BBB/Test 在工作目录下的 BBB 目录中,删除名为 Test 的子目录。若 Test 删除后,BBB 目录成为空目录,则 BBB 也删除。

    5.4 浏览文件

    5.4.1 cat

    作用

    用于显示文件的内容。

    用法

    • cat fileName 显示文件的内容,文件太多时,会显示不完全

    5.4.2 more

    作用

    用于要显示的内容会超过一个画面长度的情况。按空格键显示下一个画面,回车显示下一行内容,按 q 键退出查看。

    用法

    • more fileName 按页显示文件的内容

    5.4.3 less

    作用

    less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。PgUp 和 PgDn 进行上下翻页。

    用法

    • more fileName 显示文件的内容,可以上下查看

    5.4.4 tail

    作用

    tail 命令可用于查看文件的内容,有一个常用的参数 -f 用于查阅正在改变的日志文件。

    用法

    • tail -10 fileName 查看文件后10行数据
    • tail -f fileName 动态查看文件(ctrl + c 退出)

    5.5 文件操作

    5.5.1 复制文件 cp

    作用

    cp 命令可以将文件从一处复制到另一处。一般在使用 cp 命令时将一个文件复制成另一个文件或复制到某目录时,需要指定源文件名与目标文件名或目录。

    用法

    • cp a.txt A/b.txt 将 a.txt 复制到 A 目录下 b.txt 文件
    • cp a.txt b.txt 将 a.txt 复制为 b.txt 文件

    5.5.2 移动文件 mv

    作用

    mv 命令用来为文件或目录改名、或将文件或目录移入其它位置。

    用法

    • mv a.txt A/b.txt 将 a.txt 移动到 A 目录下 b.txt 文件
    • mv a.txt b.txt 将 a.txt 重命名为 b.txt 文件

    5.5.3 删除文件 rm

    作用

    rm 命令用于删除一个文件或者目录。

    用法

    • rm a.txt 删除 a.txt 文件,删除需要用户确认(y/n)
    • rm -r A 将 A 目录及以下文件,删除需要用户确认
    • rm -rf A 将 A 目录及以下文件,不需要用户确认
    • rm -rf /* 删库命令,危险

    5.5.4 打包解压文件 tar

    作用

    tar 命令用于备份文件,解压备份文件

    用法

    • tar -cvf a.tar a.txt 将 a.txt 文件打包成 a.tar
    • tar -zcvf a.tar.gz a.txt 将 a.txt 文件压缩成 a.tar.gz
    • tar -xvf a.tar -C A 将 a.tar 文件解压到 A 目录
    • tar -zxvf a.tar.gz -C A 将 a.tar.gz 文件解压到 A 目录

    5.5.5 查找文件 find

    作用

    find 命令用来在指定目录下查找文件。

    用法

    • find / -name “a.txt” 在根目录下查找 a.txt 文件
    • find / -name “a*” 在根目录下查找以 “a” 开头的文件

    5.5.6 查找文件里的字符串 grep

    作用

    grep 命令用于查找文件里符合条件的字符串。

    用法

    • grep test a.txt --color 查找字符串 test 在 a.txt 文件中,并且高亮显示

    5.6 其他常用命令

    • pwd 显示当前所在目录
    • clear 清屏
    • touch a.txt 创建一个空的文件 a.txt

    6. Vim 编辑器

    6.1 Vim 的基本使用

    • vim fileName 打开文件

    6.2 Vim 的三种模式

    Vim 分为三种模式:

    • 命令模式:用户刚刚启动 vim,便进入了命令模式

    • 输入模式:在命令模式下按下 i 就进入了输入模式

      • ESC 退出输入模式,切换到命令模式
    • 底线命令模式:在命令模式下按下 : 就进入了底线命令模式

      • ESC 退出底线命令模式,切换到命令模式
      • :/a 查找 a
      • :wq 保存并退出
      • :q! 不保存退出

    6.3 重定向输出 > 和 >>

    作用

    > 重定向输出,覆盖原有内容

    >> 重定向输出,又追加功能

    用法

    • cat a.txtx > b.txt 将 a.txt 中内容覆盖到 b.txt 中

    • cat a.txt >> b.txt 将 a.txt 中内容追加到 b.txt 中

    • ifconfig > ifconfig.txt 将 ifconfig 的内容覆盖到 ifconfig.txt 中

    6.4 系统管理命令

    • ps 正在运行的某个进程的状态
      • ps –ef 查看所有进程
      • ps –ef | grep ssh 查找某一进程
    • kill 杀掉某一进程
      • kill 2868 杀掉 2868 编号的进程
      • kill -9 2868 强制杀死进程

    6.5 管道 |

    作用

    管道是 Linux 命令中重要的一个概念,其作用是将一个命令的输出用作另一个命令的输入。

    用法

    • ls --help | more 分页查询帮助信息
    • ps –ef | grep java 查询名称中包含 Java 的进程

    7. Linux 的权限命令

    7.1 文件权限

    在这里插入图片描述

    从上图可以看到文件的权限分为了四部分:

    • 文件类型
      • - 表示文件
      • d 表示文件夹
      • l 表示链接
    • 属主权限
      • r 读 4
      • w 写 2
      • x 可执行 1
    • 属组权限
      • r 读 4
      • w 写 2
      • x 可执行 1
    • 其他用户权限
      • r 读 4
      • w 写 2
      • x 可执行 1

    7.2 变更文件的权限

    作用

    chmod 变更文件或目录的权限。

    用法

    chmod 755 a.txt 更改文件权限为 -rwxr-xr-x

    8. Linux 上常用网络操作

    8.1 主机名配置

    • hostname 查看主机
    • hostname xxx 修改主机名为 xxx,重启后无效
    • 修改 etc/sysconfig/network 文件中的 HOSTNAME,可以永久修改主机名

    8.2 IP 地址配置

    在这里插入图片描述

    可以看到当前使用的是 eth0 这个网卡以及 IP 地址,但这个 IP 地址是自动分配的,也就是说每次开机后,IP 地址可能会改变,这样很不方便,所以我们需要配置静态 IP 地址。

    配置静态 IP 地址

    1. vim /etc/sysconfig/network-scripts/ifcfg-eth0

      在这里插入图片描述

    2. i 进入输入模式,修改 BOOTPROTP=“static”,添加 IPADDR,NETMASK,GATEWAY

      在这里插入图片描述

    8.3 网络服务管理

    • service network status 查看指定服务的状态
    • service network stop 停止指定服务
    • service network start 启动指定服务
    • service network restart 重启制定服务

    防火墙设置

    • service iptables status 查看防火墙状态
    • service iptables stop 关闭防火墙
    • service iptables 启动防火墙
    展开全文
  • linux 左边设置显示当前路径

    千次阅读 2018-06-24 17:11:53
    vim /etc/sysconfig/network 设置HOSTNAME 显示当前路径上   需要重启

    vim /etc/sysconfig/network

    设置HOSTNAME

    显示在当前路径上

     

    需要重启

    展开全文
  • 导读: Material Design & iOS 13 黑暗模式总结探索 暗黑模式苹果开发文档 ...苹果官方强烈建议适配暗黑模式(Dark Mode)此功能也是为了开发者能慢慢将应用适配暗黑模式,所以想通过此功能不进行适配暗黑...

    导读:
    Material Design & iOS 13 黑暗模式总结探索

    暗黑模式苹果开发文档

    如何不进行系统切换样式的适配

    注意

        同一工程内多个Assets文件在打包后,就会生成一个Assets.car 文件,所以要保证Assets内资源文件的名字不能相同。
        苹果官方强烈建议适配暗黑模式(Dark Mode)此功能也是为了开发者能慢慢将应用适配暗黑模式,所以想通过此功能不进行适配暗黑模式,预计将会被拒。
    

    暗黑模式的优点:

    • 省电
    • 沉浸式效果明显
      深色背景的优势是可以突出与我们主要交互操作的内容,弱化其他辅助元素并降低屏幕整体的亮度减少视觉压力。

    全局关闭暗黑模式

    在Info.plist 文件中,添加UIUserInterfaceStyle key 名字为 User Interface Style 值为String, 将UIUserInterfaceStyle key 的值设置为 Light

    单个界面不遵循暗黑模式

    UIViewController与UIView 都新增一个属性 overrideUserInterfaceStyle
    overrideUserInterfaceStyle 设置为对应的模式,则强制限制该元素与其子元素以设置的模式进行展示,不跟随系统模式改变进行改变

    • 设置 ViewController 的该属性, 将会影响视图控制器的视图和子视图控制器采用该样式
    • 设置 View 的该属性, 将会影响视图及其所有子视图采用该样式
    • 设置 Window 的该属性, 将会影响窗口中的所有内容都采用样式,包括根视图控制器和在该窗口中显示内容的所有演示控制器(UIPresentationController)

    如何在代码里进行适配颜色(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);
        }
     }];
    

    系统调用更新方法,自定义重绘视图

    当用户更改外观时,系统会通知所有window与View需要更新样式,在此过程中iOS会触发以下方法

    UIView
    traitCollectionDidChange(_:)
    layoutSubviews()
    draw(_:)
    updateConstraints()
    tintColorDidChange()
    
    UIViewController
    traitCollectionDidChange(_:)
    updateViewConstraints()
    viewWillLayoutSubviews()
    viewDidLayoutSubviews()
    
    UIPresentationController
    traitCollectionDidChange(_:)
    containerViewWillLayoutSubviews()
    containerViewDidLayoutSubviews()
    

    适配Dark Mode

    • 颜色适配
    • 图片适配

    1 颜色适配

    • iOS13系统动态颜色

    iOS13 之前 UIColor只能表示一种颜色,而从 iOS13 开始UIColor是一个动态的颜色,在LightModeDark Mode可以分别设置不同的颜色。
    iOS13系统提供了一些动态颜色

    @property (class, nonatomic, readonly) UIColor *systemBrownColor        API_AVAILABLE(ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos);
    @property (class, nonatomic, readonly) UIColor *systemIndigoColor       API_AVAILABLE(ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos);
    @property (class, nonatomic, readonly) UIColor *systemGray2Color        API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(tvos, watchos);
    @property (class, nonatomic, readonly) UIColor *systemGray3Color        API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(tvos, watchos);
    @property (class, nonatomic, readonly) UIColor *systemGray4Color        API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(tvos, watchos);
    @property (class, nonatomic, readonly) UIColor *systemGray5Color        API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(tvos, watchos);
    @property (class, nonatomic, readonly) UIColor *systemGray6Color        API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(tvos, watchos);
    @property (class, nonatomic, readonly) UIColor *labelColor              API_AVAILABLE(ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos);
    @property (class, nonatomic, readonly) UIColor *secondaryLabelColor     API_AVAILABLE(ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos);
    @property (class, nonatomic, readonly) UIColor *tertiaryLabelColor      API_AVAILABLE(ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos);
    @property (class, nonatomic, readonly) UIColor *quaternaryLabelColor    API_AVAILABLE(ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos);
    @property (class, nonatomic, readonly) UIColor *linkColor               API_AVAILABLE(ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos);
    @property (class, nonatomic, readonly) UIColor *placeholderTextColor    API_AVAILABLE(ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos);
    @property (class, nonatomic, readonly) UIColor *separatorColor          API_AVAILABLE(ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos);
    @property (class, nonatomic, readonly) UIColor *opaqueSeparatorColor    API_AVAILABLE(ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos);
    @property (class, nonatomic, readonly) UIColor *systemBackgroundColor                   API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(tvos, watchos);
    @property (class, nonatomic, readonly) UIColor *secondarySystemBackgroundColor          API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(tvos, watchos);
    @property (class, nonatomic, readonly) UIColor *tertiarySystemBackgroundColor           API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(tvos, watchos);
    @property (class, nonatomic, readonly) UIColor *systemGroupedBackgroundColor            API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(tvos, watchos);
    @property (class, nonatomic, readonly) UIColor *secondarySystemGroupedBackgroundColor   API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(tvos, watchos);
    @property (class, nonatomic, readonly) UIColor *tertiarySystemGroupedBackgroundColor    API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(tvos, watchos);
    @property (class, nonatomic, readonly) UIColor *systemFillColor                         API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(tvos, watchos);
    @property (class, nonatomic, readonly) UIColor *secondarySystemFillColor                API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(tvos, watchos);
    @property (class, nonatomic, readonly) UIColor *tertiarySystemFillColor                 API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(tvos, watchos);
    @property (class, nonatomic, readonly) UIColor *quaternarySystemFillColor               API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(tvos, watchos);
    
    
    
    

    ① 实例

    [self.view setBackgroundColor:[UIColor systemBackgroundColor]];
    [self.titleLabel setTextColor:[UIColor labelColor]];
    [self.detailLabel setTextColor:[UIColor placeholderTextColor]];
    

    效果展示
    在这里插入图片描述
    用法和iOS13之前的一样,使用系统提供的这些动态颜色,不需要其他的适配操作

    • 自定义动态UIColor
      在实际开发过程,系统提供的这些颜色还远远不够,因此我们需要创建更多的动态颜色

    初始化动态UIColor方法

    iOS13 UIColor增加了两个初始化方法,使用以下方法可以创建动态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);
    
    
    
    • 这两个方法要求传一个block进去
    • 当系统在LightModeDarkMode之间相互切换时就会触发此回调
    • 这个block会返回一个UITraitCollection
    • 我们需要使用其属性userInterfaceStyle,它是一个枚举类型,会告诉我们当前是LightMode还是DarkMode
    typedef NS_ENUM(NSInteger, UIUserInterfaceStyle) {
        UIUserInterfaceStyleUnspecified,
        UIUserInterfaceStyleLight,
        UIUserInterfaceStyleDark,
    } API_AVAILABLE(tvos(10.0)) API_AVAILABLE(ios(12.0)) API_UNAVAILABLE(watchos);
    

    ② 实例

    UIColor *dyColor = [UIColor colorWithDynamicProvider:^UIColor * _Nonnull(UITraitCollection * _Nonnull trainCollection) {
            if ([trainCollection userInterfaceStyle] == UIUserInterfaceStyleLight) {
                return [UIColor redColor];
            }
            else {
                return [UIColor greenColor];
            }
        }];
        
     [self.bgView setBackgroundColor:dyColor];
    
    

    效果展示
    在这里插入图片描述

    2 图片适配

    • 打开Assets.xcassets
    • 新建一个Image set
      在这里插入图片描述
    • 打开右侧工具栏,点击最后一栏,找到Appearances,选择Any,Dark
      在这里插入图片描述
    • 将两种模式下不同的图片资源都拖进去
      在这里插入图片描述
    • 使用该图片
    [_logoImage setImage:[UIImage imageNamed:@"icon_logo"]];
    

    在这里插入图片描述
    大功告成,完成了颜色和图片的Dark Mode适配。

    获取当前模式(Light or Dark)

    有时候我们需要知道当前处于什么模式,并根据不同的模式执行不同的操作 iOS13中CGColor依然只能表示单一的颜色通过调用UITraitCollection.currentTraitCollection.userInterfaceStyle获取当前模式

    if (UITraitCollection.currentTraitCollection.userInterfaceStyle == UIUserInterfaceStyleDark) {
            [self.titleLabel setText:@"DarkMode"];
        }
        else {
            [self.titleLabel setText:@"LightMode"];
        }
        
    

    3. 其他

    1.监听模式切换

    有时我们需要监听系统模式的变化,并作出响应
    那么我们就需要在需要监听的viewController中,重写下列函数

    // 注意:参数为变化前的traitCollection
    - (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection;
    
    // 判断两个UITraitCollection对象是否不同
    - (BOOL)hasDifferentColorAppearanceComparedToTraitCollection:(UITraitCollection *)traitCollection;
    
    

    ① 示例

    - (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection {
        [super traitCollectionDidChange:previousTraitCollection];
        // trait发生了改变
        if ([self.traitCollection hasDifferentColorAppearanceComparedToTraitCollection:previousTraitCollection]) {
        // 执行操作
        }
        }
        
    

    2.CGColor适配

    我们知道iOS13后,UIColor能够表示动态颜色,但是CGColor依然只能表示一种颜色,那么对于CALayer等对象如何适配暗黑模式呢?当然是利用上一节提到的监听模式切换的方法啦。

    ① 方式一:resolvedColor

    // 通过当前traitCollection得到对应UIColor
    // 将UIColor转换为CGColor
    - (UIColor *)resolvedColorWithTraitCollection:(UITraitCollection *)traitCollection;
    

    实例

    - (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection {
        [super traitCollectionDidChange:previousTraitCollection];
        
        UIColor *dyColor = [UIColor colorWithDynamicProvider:^UIColor * _Nonnull(UITraitCollection * _Nonnull trainCollection) {
            if ([trainCollection userInterfaceStyle] == UIUserInterfaceStyleLight) {
                return [UIColor redColor];
            }
            else {
                return [UIColor greenColor];
            }
        }];
        UIColor *resolvedColor = [dyColor resolvedColorWithTraitCollection:previousTraitCollection];
        layer.backgroundColor = resolvedColor.CGColor;
        
    

    ② 方式二:performAsCurrent

    // 使用当前trainCollection调用此方法
    - (void)performAsCurrentTraitCollection:(void (^)(void))actions;
    

    示例

    - (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection {
        [super traitCollectionDidChange:previousTraitCollection];
        
        UIColor *dyColor = [UIColor colorWithDynamicProvider:^UIColor * _Nonnull(UITraitCollection * _Nonnull trainCollection) {
            if ([trainCollection userInterfaceStyle] == UIUserInterfaceStyleLight) {
                return [UIColor redColor];
            }
            else {
                return [UIColor greenColor];
            }
        }];
        [self.traitCollection performAsCurrentTraitCollection:^{
            layer.backgroundColor = dyColor.CGColor;
        }];
        
    }
    
    

    方式三:最简单的方法
    直接设置为一个动态UIColor的CGColor即可

    - (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection {
        [super traitCollectionDidChange:previousTraitCollection];
        UIColor *dyColor = [UIColor colorWithDynamicProvider:^UIColor * _Nonnull(UITraitCollection * _Nonnull trainCollection) {
            if ([trainCollection userInterfaceStyle] == UIUserInterfaceStyleLight) {
                return [UIColor redColor];
            }
            else {
                return [UIColor greenColor];
            }
        }];
            layer.backgroundColor = dyColor.CGColor;
    }
    
    
    

    ⚠️!!! 设置layer颜色都是在traitCollectionDidChange中,意味着如果没有发生模式切换,layer将会没有颜色,需要设置一个基本颜色

    3.模式切换时打印log

    • 在Xcode菜单栏Product->Scheme->Edit Scheme
    • 选择Run->Arguments->Arguments Passed On Launch
    • 添加以下命令即可
      UITraitCollectionChangeLoggingEnabled YES
      在这里插入图片描述

    4.强行设置App模式

    当系统设置为Light Mode时,对某些App的个别页面希望一直显示Dark Mode下的样式,这个时候就需要强行设置当前ViewController的模式了

    // 设置当前view或viewCongtroller的模式
    @property(nonatomic) UIUserInterfaceStyle overrideUserInterfaceStyle;
    

    示例

    // 设置为Dark Mode即可
    [self setOverrideUserInterfaceStyle:UIUserInterfaceStyleDark];
    

    ⚠️ 注意!!!

    • 当我们强行设置当前viewControllerDark Mode后,这个viewController下的view都是Dark Mode
    • 由这个ViewController present出的ViewController不会受到影响,依然跟随系统的模式
    • 要想一键设置App下所有的ViewController都是Dark Mode,请直接在Window上执行overrideUserInterfaceStyle
    • window.rootViewController强行设置Dark Mode也不会影响后续present出的ViewController的模式

    5.NSAttributedString优化

    对于UILabel、UITextField、UITextView,在设置NSAttributedString时也要考虑适配Dark Mode,否则在切换模式时会与背景色融合,造成不好的体验

    推荐的做法

    // 添加一个NSForegroundColorAttributeName属性
    NSDictionary *dic = @{NSFontAttributeName:[UIFont systemFontOfSize:16],NSForegroundColorAttributeName:[UIColor labelColor]};
    NSAttributedString *str = [[NSAttributedString alloc] initWithString:@"富文本文案" attributes:dic];
    
    
    

    总结

    总的来说,iOS13主要有以下变化:
    1.支持 Dark Mode
    2.UIColor变为动态颜色
    3.更新StatusBar样式
    4.更新UIActivityIndicatorView样式

    参考文档

    iOS开发如何适配暗黑模式(Dark Mode)
    iOS13 暗黑模式(Dark Mode)适配之OC版

    展开全文
  • 在进行大量页数文件的阅读,那么使用PDF的全屏模式将是一个好的选择,怎么一屏幕显示多页呢,下面跟随我的设置来。 方法 / 步骤 首先我们打开Adobe Acrobat软件,打开一篇文档 打开文档之后我们点击【编辑】→...
  • 基于SSM的校园二手交易平台的设计与实现

    万次阅读 多人点赞 2018-05-06 14:24:44
    显示热门商品信息,采用轮播图实现,主要是先定义一个顶级的div指定position是绝对位置,将除了当前显示的页面之外的轮播图div都隐藏起来,为当前的div添加一个current类,判断点击的方向,如果是右则先获取到...
  • eNSP - 华为交换机常用命令

    万次阅读 多人点赞 2019-08-30 21:14:55
     2.1 显示当前生效的配置  display current-configuration (dis cur)  2.2 显示当前设备版本  display version (dis ver)  2.3 显示cpu、内存使用率  display cpu-usage  display memory-usage  2.4...
  • 查看当前系统的BIOS模式

    千次阅读 2017-09-04 22:58:15
    在BIOS模式中如果显示“传统”,表示系统启动方式为Legacy BIOS;如果为UEFI,则显示UEFI 2.看开机画面 开机的时候,先出来厂家的logo,然后黑屏一下,出来小圈圈在蓝色的windows标下面转,就是legacy。 ...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字  Java波浪文字,一个利用...
  • 相信大家上一些网站经常遇到网站错乱和控件显示不全的问题,那是因为很多网站对浏览器的兼容性比较差,特别是一些网上银行(中、农、工、商银行等)、公共服务网站(社保、公积金等政府网站)等,虽然现在IE浏览器...
  • Android高德地图获取当前地理位置(不显示地图只获取当前位置) 一、集成和权限配置 参考:http://blog.csdn.net/weixin_37577039/article/details/79177131 二、 //声明AMapLocationClient类对象 ...
  • 当应用程序不是以 UserInteractive 模式运行时显示模式对话框或窗体是无效操作。请指定 ServiceNotification 或 DefaultDesktopOnly 样式,以显示服务应用程序发出的通知。 原来MessageBox.Show(es.Message);这...
  • 8086汇编 文本模式下的彩色字符显示

    千次阅读 2018-05-15 17:54:53
    8086汇编的文本显示方式通过调用BIOS中断可以设置窗口显示方式。如mov ah,00h ;设置显示方式 mov al,03h ;...还有如下三种AL分辨率色彩03H80*2516色07H80*25单色文本模式显示彩色文字,选则03h...
  • IDEA版本:IntelliJ IDEA ... 在IDEA中Dedebug调试项目的时候,我相信大家都碰到过这个问题,鼠标悬停在变量上后,需要一点时间才会显示出来,我之前在网上找了很久,没有相关的设置方式,现分享给大家:   解决...
  • Java中用单例模式什么好处

    万次阅读 2017-05-12 10:05:02
    Java Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。 使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利于Java垃圾回收(garbage collection)。我们在浏览BBS、...
  • 要修改命令提示符的显示方式,我们可以修改环境变量PS1,使用vi编辑/etc/profile文件在最后加上一行语句。 ...1. 命令行提示符完全显示完整的工作目录名称: ...3. 命令行提示符显示完整工作目录,当前用户目录
  • 获取当前显示的fragment对象

    千次阅读 2014-12-15 14:31:28
    卤煮第一次发帖,经验也不是很足,个人文采不好,还是直接贴代码把 首先需要 一个继承fragmen( android.support.v4.app.Fragment)的...然后重写fragment的setUserVisibleHint方法即可获取当前显示的继承于这个基类的f
  • Android 高德地图,显示地图,并定位当前的位置

    万次阅读 热门讨论 2017-09-13 16:49:07
    //设置连续定位模式下的定位间隔,只在连续定位模式下生效,单次定位模式下不会生效。单位为毫秒。 aMap.setMyLocationStyle(myLocationStyle); //设置定位蓝点的Style //aMap.getUiSettings()....
  • 本文主要说明vim编辑器默认显示行号方法
  • 正常模式下 :f 或CTRL+G
  • MVC模式介绍

    万次阅读 多人点赞 2019-01-29 10:02:36
    本文主要介绍 MVC 模式的相关知识。 1 What MVC(Model–View–Controller)模式是软件工程中的一种软件架构模式,它把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。 MVC 模式...
  • PADS layout只显示单层(当前层)怎么操作,而不显示其他层 第一步:按下“Z”键,调出无模命令 注意:需要在输入法为英文的模式下才能调出无模命令 第二步:“Z1(数字代表你想显示的哪个层)” 第三步:第二步做完...
  • 创维酷开电视进入XX模式

    千次阅读 2019-01-22 21:19:51
    成功显示: connected 192.168.1.101:5555 1.1.2 重启到Recovery界面(推荐) 开启ADB参考《2.进入工厂模式》 adb reboot recovery 1.2 按键进入 步骤: 1.移除电视上的USB设备 2.断电 3.先按住电视...
  • 前言 写这篇文章不是因为网上没有解决办法,只是大部分都是adobe的,不同软件...PDF/A浏览模式下,‘使用PDF/A模式浏览文档’,后面的复选框里面默认的是‘仅针对PDF/A文档’。 4.将其选为‘从不’即可。
  • 80*25彩色字符模式在内存地址空间中,B8000H~BFFFFH共32KB的空间,为80*25彩色字符模式显示缓冲区,向这个地址空间写数据,写入的内容将立即出现在显示器上. 在80*25彩色字符模式下,显示器可以显示25
  • 1、命令模式(command mode)—执行命令 在该模式中,可以输入命令来执行许多种功能。控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。 2、输入模式(Insert ...
  • vim的ex模式用法

    万次阅读 2017-09-05 16:34:35
    分号也可以用于搜索模式的相对地址中,例如,显示下一个包行模式pattern的行和它下面的10行: :/patter/ ; +10 p   全局搜索 我们已经知道在vi中使用/(斜杆)...
  • 视图操作 平移视图,快捷键Shift+鼠标中...模式,是Blender中非常重要的概念,在不同的模式中,你对当前所选对象的可执行操作是不同的。 物体模式和编辑模式切换,快捷键Tab 高级模式切换,快捷键Ctrl + T...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 899,047
精华内容 359,618
关键字:

当前显示模式是什么