屏幕适配之Size Classes

屏幕适配之Size Classes 2---分屏适配 屏幕适配之Size Classes 2—分屏适配仅供大家参考如有问题欢迎加Q群157672725讨论。在上一期中我们了解了Size Classes的基本用法,这一期主要讲一下其在iOS9分屏适配中的作用。 iOS9分屏介绍 项目如何开启分屏模式 Size Classes在分屏中的作用 iOS9分屏介绍当初Surface分屏功能出现的时候,我就在想要是iPad也能分屏那该多好,所幸的是在iOS9上终于 阅读详情

屏幕适配之Size Classes

仅供大家参考如有问题欢迎加Q群157672725讨论。
博客地址:http://catchzeng.leanote.com/

在适配ios8的时候,其实autolayout基本都可以满足,所以当时没有使用上Size Classes。这几天为了适配ios9用上了Size Classes。令我最开心的是,很方便地解决了不同状态下不同布局的问题(如:横屏和竖屏布局不同、iPad和iPhone布局不同),下图是我用Size Classes做的一个demo。

效果图


Size Classes的概念

布局的进化史
代码frame -> autoreszing(父子控件的关系ios6) -> autolayout(任何控件都可以产生关系ios7) -> Size Classes(抽象ios8)。

其实sizeclass是对设备的一种抽象。它不再有尺寸、横屏和竖屏的概念,只有(Compact、Any,Regular)的概念,即把设备分为紧凑型、任意型、宽松型(如下图)
storyboard的展示形态抽象形态

为了方便理解Size Classes,可以把它想象成一个屏幕选择器,可以对不同屏幕进行选择。我们需要注意的是Size Classes仅仅是对屏幕进行了分类, 真正布局还是交给autolayout

问题:如何知道适配的设备使用那种型?
解决:在storyboard中移动鼠标选中某一个型,可以看到关于该型适应的信息(如下图)
这里写图片描述 该型表示 竖屏的iPhone

这里写图片描述 该型表示 横屏的iPhone

这里写图片描述 该型表示 竖屏的iPhone 和 ipad横竖屏


Size Classes的实践

下面我们就照着gif图上的例子来讲一下如何在项目中使用Size Classes来解决问题。
1.首先建立一个singleview的工程,打开Main.storyboard,在wAny hAny的型下拖拽两个view和两个label
这里写图片描述

2.接下来先设置所有状态下都需要的约束

【我们希望蓝色的view在任何情况下都是正方形,设置其Aspect Ratio为1:1】
这里写图片描述

【我们希望红色的view在任何情况下大小都是44x44并且与lab名称顶部位置一直,设置其width 44 height 44 Align Top to 名称】
这里写图片描述

3.其他设置如下
这里写图片描述

这里写图片描述

这个时候我们会看到红色的警告,表示我们没有把自动布局的约束设置完全,那下一步我们该做的是在你需要的型下把剩余的约束补充完成。

4.选择型到 wCompact hRegular(选中后wCompact hRegular的背景会变蓝色,表示你已经进入到该型的模式下)
这里写图片描述

5.为该型补充剩余的约束

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

此时我们看到红色的警告已经没有,表示我们已经把该型的约束补充完毕
这里写图片描述

6.接下来,我们切换到wAny hCompact型下添加约束
这里写图片描述

7.添加的约束
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

直到红点消失!!
这里写图片描述

好了,兴奋的一刻来了运行一下,旋转一下是不是跟gif上的一样呢!


小结一下:

1.先在 wAny hAny的型下设置所有状态下都需要的约束(有点像面向对象的基类),能减少约束的重复设置
2.选择需要适配的型,进行约束的添加(有点像子类)
4.Size Classes实际上是继承的思想在布局中的运用,让我们能在一个storyboard中设置不同状态下的形态,免去了以前横屏一个xib,竖屏一个xib的麻烦。
5.Size Classes也为ios9的分屏适配带来便捷【该点会在下一期提及】

今天就到这里了,下期见!

demo源码:https://github.com/catchZeng/SizeClassDemo

iOS屏幕适配:深入理解frame的应用 本文还有配套的精品资源,点击获取 简介:在iOS开发中,适配不同设备的屏幕尺寸和比例是至关重要的。本主题主要探讨了如何利用 CGRect (frame)在各种iOS设备上确保用户界面的正确显示。涉及的要点包括理解屏幕尺寸和比例、运用Auto Layout、Size Classes、Intrinsic Content Size、编写代码适配、使用Storyboa... 阅读详情

相关推荐

ios-自动布局系列代码(包括xib、storyboard、autoresizing、autolayout size class).zip

细谈屏幕适配和界面开发辅助工具

iOS8开发~UI布局(一)初探Size Class

一、Size Class 二、

阿福的专栏 5397

FMC/FSMC/EXMC总线NORFlash/PSRAM接口(异步-复用-不突发/同步-复用-突发)

目录 1 简介 1.1 框图 1.2 接口定义 1.3 读写时序图、时序配置参数 1.4 PSRAM控制器异步工作模式分类 1.5 PSRAM寄存器配置 1.5.1 控制寄存器BCR 1.5.2 片选时序寄存器BTR 1.5.3 写入时序寄存器BWTR 2 FPGA接口设计 2.1 实际配置的时序 2.2 接口信号处理 3 参考文献 1 简介 使...

leixj的博客 2万+

iOS8 Size Classes的理解与使用

iOS8 Size Classes的理解与使用 Size Classes是什么 iOS 8在应用界面的可视化设计上添加了一个新的特性-Size Classes,对于任何设备来说,界面的宽度和高度都只分为两种描述:正常和紧凑。这样开发者便可以无视设备具体的尺寸,而是对这两类和它们的组合进行适配。这样不论在设计时还是代码上,我们都可以不再受限于具体的尺寸,而是变成遵循尺寸的视觉感官来进行适配。

gaozhenweigzw的专栏 576

从零到一:RF-DETR如何通过神经架构搜索重塑实时目标检测的边界

RF-DETR通过创新的权重共享神经架构搜索(NAS)机制,重新定义了实时目标检测的技术边界。这项技术在COCO等基准测试中表现卓越,成为首个AP超过60的实时检测器,同时保持跨领域稳定性和高效推理速度。RF-DETR的动态架构调整能力使其能够适应从嵌入式设备到云端服务器的各种硬件环境,为工业质检、自动驾驶等场景提供灵活解决方案。

weixin_29061531的博客 469

RANSAC地面点分割:从原理到C++实战优化

本文深入解析RANSAC算法在点云地面分割中的原理与C++实战优化,涵盖动态迭代次数、自适应阈值等关键技巧,通过并行计算和内存访问优化提升性能,适用于激光雷达点云处理。

weixin_29015051的博客 277

iOS8后 屏幕适配 Size Classes 、 AutoLayout

iOS8 屏幕适配 Size Classes介绍 很多人因为App屏幕适配烦恼,我自己做的项目也是很多适配的原因,代码实现需要算很多frame,感觉比较麻烦,现在有Size Classes,简单了解以后,可能会有所帮助 在 iOS8 中,我们不用再像以前那样,一个页面新建多个 xib 文件来适配不同类型的屏幕,现在我们可以把各种尺寸屏幕的适配工作放在一个文件中完成,然后可以通过不同类别的 Size

qq_18500527的专栏 484

kemeas算法继续优化——elkan kmeas算法

题记:又是凌晨3点的夜 elkan kmeans算法 在我的上一篇博客《kmeans算法性能改进_kmeans++算法+kmeans++优化算法+距离计算优化》中,在一般kmeans算法的基础上,添加了对于初始条件和距离计算更上的一些优化技巧。这篇博客聊一聊elkan算法,其实也是对于kmeans运行速度的优化算法。主要作用与kmeans的距离计算过程。 原理 假如我们已经知道任意两个样本之间的距离,再假设我们已经知道了样本1与聚类中心1之间的距离,根据三角性两边之和大于第三边,c+d>a,所以如果

铁血军的小博客 7065

iOS开发之SizeClass使用

一、什么是sizeclass以及它能干什么 在xib和storyboard中进行布局使用autolayout能够适配不同尺寸的屏幕,但是对于横屏和ipad这种跟一般iPhone尺寸相差比较大的屏幕,只用autolayout很难一种布局适应所有尺寸。这就需要用到sizeclss对不同屏幕类别下的约束和控件进行调整。 sizeclss主要是主要针对横竖屏和ipad的屏幕进行特殊约束处理的一种工具。 ...

硬币2014 2249

西门子S7-200 SMART PLC高速计数器与增量式编码器实战配置指南

在工业自动化控制系统中,传感器是将物理量转换为电信号的关键组件,其中编码器作为核心的位置与速度检测元件,其工作原理基于光电或磁电效应,将机械位移转换为脉冲序列。增量式编码器通过输出相位差90度的A/B两相脉冲,不仅能实现精确的位移测量,还能通过相位关系自动判别运动方向,并通过倍频技术提升分辨率。其技术价值在于为PLC等控制器提供了实时、高精度的位置反馈,是实现闭环控制、提升系统精度与可靠性的基础。在包装机械、物料输送、绕线设备等应用场景中,编码器与PLC高速计数器的协同工作是实现精确定位、定长切割与速度控制

weixin_29178069的博客 396

网工最容易搞混的三个概念:防火墙、网闸、堡垒机,一文让你轻松搞明白。

网闸的作用可以简单概括为:在两个或多个不同安全级别的网络(如内网和外网、普通网与高安全网、受限网与互联网)之间建立一个严格隔离、信息流转的安全桥梁。它的核心任务是实现数据安全传输与隔离,避免网络之间的直接连接带来的安全隐患。数据传输安全:网闸保证数据从一个网络到另一个网络时,能够进行审查、过滤和转换,防止恶意数据或非法信息被传入内部网络或外部泄露。高安全性隔离:网闸常常用于企业的内外网隔离、军事网络、政府机关等对数据隔离要求极高的环境。

HWP18612324139的博客 3637

Netty源码之SizeClasses(4.1.58)

Netty源码之SizeClasses(4.1.58) 概述 前面已对 Netty 使用 jemalloc3(jemalloc3、jemalloc4 指代 Netty 实现的 Java 版本,而非 C) 实现的内存分配的思路以及源码进行详解,接下来的这两篇是详解 Netty 基于 jemalloc4 重构内存分配的思想以及源码。jemalloc4 相较于 jemalloc3 最大的提升是进一步优化内存碎片问题,因为在 jemalloc3 中最多可能会导致 50% 内存碎片,但 jemalloc4 通过划分

ClarenceZero的博客 870

ESP32-IDF开发之旅 网络篇⑩ Web配网

本文介绍了基于ESP32S3的Web配网实现方案。作者通过移植开源项目,在ESP32S3上实现了WiFi配置功能,包括AP模式创建、HTTP服务器搭建、NVS存储读写等核心功能。文章详细解析了代码结构,包含WiFi初始化、事件处理、NVS存储管理和HTML页面服务等关键模块。实现方案采用AP+STA双模式,支持通过网页扫描WiFi并保存配置信息,适用于物联网设备的网络配置场景。代码中使用了FreeRTOS任务、ESP-IDF事件组等技术,并提供了完整的错误处理和日志记录功能。

单片机菜鸟哥的博客 350

iOS8 屏幕适配Size Classes

原文地址:http://blog.callmewhy.com/2014/09/12/learn-ios8-size-class/ 以前和安卓的同学聊天的时候,谈到适配一直是一个非常开心的话题,看到他们被各种屏幕适配折磨的欲仙欲死,心里真替他们高兴。不过在做到 iPhone 和 iPad 的适配的时候,一个页面需要配置多个 xib 进行开发还是个很头疼的事情。再加上 iPhone6 和 i

hantaoye的专栏 933

ABAP 平台 SOAUTH2_CLIENT 全面实战:用一套配置,打通 OAuth 2.0 客户端的创建、联调与运维

本文是一份ABAP平台上配置OAuth 2.0客户端的全流程指南,重点介绍新界面SOAUTH2_CLIENT的使用方法。内容涵盖从概念解析到实操步骤,包括四种常见授权方式的选择、证书信任管理、Scope配置以及联调技巧。指南通过两个企业级案例(对接SAP BTP Cloud Integration和SAML 2.0身份联合)展示实际应用场景,并提供了配置清单和伪代码示例。特别强调新界面将客户端配置、令牌测试和校验功能整合的工程化优势,以及与旧事务码OA2C_CONFIG的主要差异。文中多处引用SAP官方文档

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 319

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

IOS界面UI设计2之屏幕适配AutoLayout、size classes(一)

从IOS7、Xcode5开始就有一个很强大的工具逐渐

关注IOS、Android网络、音视频编解码、特效、Neon算法优化,DSP等嵌入式驱动开发算法移植 1084

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

IOS界面UI设计4之屏幕适配AutoLayout、size classes(三)

iOS 8里面有个新技术叫做SizeClasses,但是这个东西也是建立在autolayout上的,我建议还是学习用autolayout吧,如果坚持要用绝对布局去做,我看只能判断设备去布局了,不同设备不同的布局。 (1)    设置一个矩形,居中显示。

关注IOS、Android网络、音视频编解码、特效、Neon算法优化,DSP等嵌入式驱动开发算法移植 947

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

关于IOS的屏幕适配(iPhone)——Auto Layout和Size Classes

Auto Layout和Size Classes搭配使用极大的方便了开发者,具体如何使用Auto Layout和Size Classes大家可以参考其他文章或者书籍,这里只提一点,在我们设置Size Classes时如果我们想在横屏和竖屏都展现控件的话,那我们应该取他们的并集,即w Any|h Any .如果横屏或者竖屏又包含一些只在横屏状态或者竖屏状态才展现的控件,那么需要在他们的特定的状态进行...

weixin_34234721的博客 116

IOS界面UI设计3之屏幕适配AutoLayout、size classes(二)

AutoLayout02 实现如下效果: 只要明确4点即可。(x、y、w、h)

关注IOS、Android网络、音视频编解码、特效、Neon算法优化,DSP等嵌入式驱动开发算法移植 848

自动布局autolayout与sizeclass

屏幕适配发展: 1. 通过代码计算 frame 2. Autoresizing(设置控件与父控件的相对关系,从而实现间接设置frame, ios系统在运行时会根据设置的规则, 计算出对应的frame,无需手动计算frame) 通过设置子控件与父控件的关系来决定如何显示控件 3. autolayout 通过设置某控件与任意其他控件间的关系来决定如何显示这个控件, 不仅

yejiexiaobai的博客 616

iOS6与iOS7屏幕适配技巧

iOS6与iOS7屏幕适配技巧(转) 转载于:https://www.cnblogs.com/hl666/p/3655277.html

weixin_30786617的博客 62

ios 纯代码怎么适配ipad_iOS屏幕适配(纯代码)

在iOS实际项目开发中, 我们经常要适配不同尺寸的屏幕,如iPhone4s,iPhone5/s,iPhone6/s,iPhone6Plus等. 在代码中创建一个控件如:UILabel *label = [UILabel alloc] init];label.frame = CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height...

weixin_39588432的博客 1004

iOS:Autoresizing屏幕适配

说明: Autoresizing屏幕适配,只能设置当前View相对父View的位置,不能设置平级的View的位置,共6根线。 使用: (1)选中View,点击右边第一个文件图标,去掉"Use Auto Layout"和"Use Size Classes"勾选。 (2)选中View,点击右边第5个小尺子图标,在Autoresizing项中,根据要求选中6根线中的一些线, 如:左线、右线、上线、...

a526001650a的专栏 227

可视化编程-StoryBoard

一、StoryBoard与xib 对比: 相同点:都属于IB编程的方式,可以快速构建GUI。 不同点:xib侧重于单文件(单独的控制器或者视图)编辑,storyboard侧重于多页面关联。storyboard可以直观的梳理出页面间的逻辑,并且所有页面跳转逻辑均可在-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)se...

weixin_30617737的博客 118

Android compose屏幕适配终极解决方案

上文中有提到折叠屏,屏幕界面显示也要考虑到折叠屏是单屏啊,还是正在折叠,折叠完毕多屏显示的状态,根据不同的状态来显示不同的界面内容使我们的软件能够有更加人性化的体验。在编写代码的初期 我们可以将每一块显示的方法进行封装,这样在其他界面有相同的界面后者类似的界面时,我们可以非常方便的调用封装好的方法体从而减少二次重复操作的问题。这里分别显示的是 手机显示/折叠屏显示/平板显示的效果,我们可以看到在不同尺寸的屏幕下所展示的效果是不同的。大屏适配的本质就是要根据不同的屏幕尺寸来显示不同的界面布局。

2509_93881771的博客 1852

Android屏幕适配实战:用ScreenMatch插件解决dp比例不一致问题

在Android开发中,dp作为密度无关像素常被误以为能自动适配不同屏幕,但实际上它只与屏幕密度相关,与屏幕宽度无关,导致同一尺寸在不同设备上视觉比例差异明显。最小宽度适配方案通过预生成values-swXXXdp目录,按设备短边dp值匹配最接近且不超过的尺寸资源,从而保持UI相对比例一致。这一机制无需运行时计算,资源直观可控,适合标准UI设计稿和中小团队快速落地。ScreenMatch插件将这一繁琐的目录生成过程自动化,在Android Studio中一键生成多套dimens.xml,帮助开发者高效解决屏

weixin_29196315的博客 263
上一篇: iOS9适配问题
下一篇: 屏幕适配之Size Classes 2---分屏适配
CatchZeng
博客等级 码龄15年 4粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值