美文网首页
Trait Collections 和 Size Class

Trait Collections 和 Size Class

作者: Geek_小伟 | 来源:发表于2017-03-03 12:08 被阅读0次

    view和viewControll都遵守UITraitEnvironment协议,该协议中有一个traitCollection属性和一个方法:

    public func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?)
    

    该属性是UITraitCollection类型,该类有下面一些属性
    displayScale描述当前显示器的显示比例1,2,3
    userInterfaceIdiom描述当前设备类型,是一个枚举phone、pad、tv、carplay
    horizontalSizeClass和verticalSizeClass 都是枚举,描述SizeClass, 意义是

    horizontalSizeClass和verticalSizeClass的值都是regular,运行在ipad上
    horizontalSizeClass和verticalSizeClass的值都是compact,运行在iphone水平方向(除了6p和7p)
    horizontalSizeClass是regular,verticalSizeClass是compact,运行在6p和7p的水平方向上
    horizontalSizeClass是compact,verticalSizeClass是regular,运行在iphone的竖直方向上
    利用这些属性可以得到app运行的环境以便在不同环境下进行适配
    当app运行的环境改变时UITraitEnvironment协议会通知上面的方法以便app进行适配,上面的方法提供之前的信息作为参数,如果想获得改变之后的信息可以用self.traitCollection

    还可以自己创建UITraitCollection类型的实例

    let tcdisp = UITraitCollection(displayScale: 2.0)
    let tcphone = UITraitCollection(userInterfaceIdiom: .phone)
    let tcreg = UITraitCollection(verticalSizeClass: .regular)
    let tc = UITraitCollection(traitsFrom: [tcdisp,tcphone,tcreg])
    

    最后一个初始化方法将前面三个实例进行组合,如果前面三个实例设置的属性有重复,以数组最后一个实例设置的为准。不同属性设置进行组合

    UITraitCollection实例还可以用下面的方法进行比较

    open func containsTraits(in trait: UITraitCollection?) -> Bool
    

    相关文章

      网友评论

          本文标题:Trait Collections 和 Size Class

          本文链接:https://www.haomeiwen.com/subject/uqilgttx.html