博客
关于我
iOS基础——屏幕适配之autoResizing、autoLayout、sizeClass
阅读量:718 次
发布时间:2019-03-21

本文共 2057 字,大约阅读时间需要 6 分钟。

iOS 基础 - 屏幕适配(autoresizing, autoLayout, sizeClass)

一、autoResizing

  • autoResizing的出现autoResizing 是 iOS 6 之前 用来支持横屏设备的首选方案。它主要通过设置 View 与父 View 之间的适配来实现屏幕适配。

  • autoResizing 的缺点autoResizing 的主要缺点在于其设置的适配仅限于父 View 与子 View 之间,无法覆盖多个 View 之间的全局适配。

  • autoResizing 的使用在实际开发中,autoResizing 的使用相对简单。通过在每个 View 的右侧设置中勾选 autoResizing 的相关选项(六个可用的间距和比例raudius settings),即可设置适配规则:

    • 左边线:保持左边距不变,其余方向随屏幕放大而自动增长
    • 右边线:保持右边距不变,其余方向随屏幕放大而自动增长
    • 上边线:保持上边距不变,其余方向随屏幕放大而自动增长
    • 下边线:保持下边距不变,其余方向随屏幕放大而自动增长
    • 中间横线:维持宽度与屏幕宽度同步
    • 中间竖线:维持高度与屏幕高度同步

    注意:由于 autoResizing 的限制,在实际项目中大多采用 autoLayout 或第三方库如 easedraw 的解决方案。

    1. autoResizing 的代码实现在代码实现中,通过设置 view.autoresizingMask 的方式来配置适配规则:
    2. view.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin |UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin;

      二、autoLayout

    3. autoLayout 的出现为了克服 autoResizing 的局限性,iOS 6 之后正式推出了 autoLayout。autoLayout 不仅支持单个 View 与父 View 之间的适配,还支持多个 View 之间的定向布局,实现更灵活的屏幕适配。

    4. autoLayout 的介绍autoLayout 的核心原理是基于参照物和约束的建立,即通过设置每个 View 的起始位置(x 和 y),宽度和高度约束,可建立复杂的布局体系。

    5. autoLayout 的使用在开发过程中,主要通过以下方式进行配置:

      • storyboard 中的 ViewController 是否启用 autoLayout
      • handoff 模型设置(可选)
      • 采用 IBOutlet 连接或通过代码手动配置约束
      1. autoLayout 的属性配置在实际开发中,可以通过以下方式添加约束:
      2. NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:myViewattribute:NSLayoutAttributeWidthrelatedBy:NSLayoutRelationEqualtoItem:anotherViewattribute:NSLayoutAttributeWidthmultiplier:1constant:0];[self.view addConstraint:constraint];

        为了提高工作效率,可以使用 VFL(Visual Format Language)语言,或第三方框架如 Mayo 的 Masonry 库进行布局设置。

        1. autoLayout 都得注意事项
          • 在 UITableView 中Cell布局需手动设置行高及底部边距约束
          • estimatedRowHeight 设置合理值,以便系统能够正确估算单元格高度

          三、sizeClass

        2. sizeClass 的出现随着屏幕尺寸的不断扩大,开发者需要处理不同屏幕尺寸的适配问题。iOS 系统提供了 sizeClass 的解决方案,通过屏幕尺寸分类,实现统一的适配。

        3. sizeClass 的分类

          • Compact(紧凑型,小屏幕)
          • Any(通用型,适用于所有屏幕尺寸)
          • Regular(宽松型,大屏幕)
          1. sizeClass 的使用在项目开发过程中,可以通过以下方式进行配置:
            • 在 storyboard 中的 Buttons 设置 w Any、h Any 后,根据不同屏幕尺寸分类设置适配
            • 通过系统预设的分类常量(如 NSLog普通的常量),完成视图布局的统一适配。

            总结:屏幕适配是开发者必须面对的重要课题。在 iOS 系统中,autoResizing、autoLayout 和 sizeClass 提供了多样化的解决方案。为了实现跨屏幕适配,建议根据项目需求选择最优方案,结合 VFL、Masonry 等工具,提升开发效率。

    转载地址:http://tevrz.baihongyu.com/

    你可能感兴趣的文章
    Mysql中varchar类型数字排序不对踩坑记录
    查看>>
    MySQL中一条SQL语句到底是如何执行的呢?
    查看>>
    MySQL中你必须知道的10件事,1.5万字!
    查看>>
    MySQL中使用IN()查询到底走不走索引?
    查看>>
    Mysql中使用存储过程插入decimal和时间数据递增的模拟数据
    查看>>
    MySql中关于geometry类型的数据_空的时候如何插入处理_需用null_空字符串插入会报错_Cannot get geometry object from dat---MySql工作笔记003
    查看>>
    mysql中出现Incorrect DECIMAL value: '0' for column '' at row -1错误解决方案
    查看>>
    mysql中出现Unit mysql.service could not be found 的解决方法
    查看>>
    mysql中出现update-alternatives: 错误: 候选项路径 /etc/mysql/mysql.cnf 不存在 dpkg: 处理软件包 mysql-server-8.0的解决方法(全)
    查看>>
    Mysql中各类锁的机制图文详细解析(全)
    查看>>
    MySQL中地理位置数据扩展geometry的使用心得
    查看>>
    Mysql中存储引擎简介、修改、查询、选择
    查看>>
    Mysql中存储过程、存储函数、自定义函数、变量、流程控制语句、光标/游标、定义条件和处理程序的使用示例
    查看>>
    mysql中实现rownum,对结果进行排序
    查看>>
    mysql中对于数据库的基本操作
    查看>>
    Mysql中常用函数的使用示例
    查看>>
    MySql中怎样使用case-when实现判断查询结果返回
    查看>>
    Mysql中怎样使用update更新某列的数据减去指定值
    查看>>
    Mysql中怎样设置指定ip远程访问连接
    查看>>
    mysql中数据表的基本操作很难嘛,由这个实验来带你从头走一遍
    查看>>