`

iOS屏幕适配(续)

 
阅读更多

上一篇博客总结了iOS屏幕适配的若干技巧,本文再补充几点别的方面

设计图

一般会先由美工做出界面的设计图,然后开发再去实现。上一篇博客说的主要是,开发怎么实现的问题。实际上从设计图这个环节,就需要开始考虑界面适配的问题。主要是2点:

1、出几张图

如果以iPhone6为基准出设计图的话,一般很难完美地适配到iPhone4,5和6P上,因为屏幕尺寸差异很大。一般在6上摆得很紧凑好看,在4和5上就会摆不下(溢出屏幕),在6P上则会有比较大的空隙

通常有几种办法:

设计元素的位置和大小,不用具体的数值,而是使用百分比,这样在每种屏幕上会适配。但是通常这只是理想情况,因为4种屏幕的宽高比都不一样,必然会出现拉伸的情况;可能在4上的显示区域和点击区域都会非常小;而且也难以达到最佳视觉效果

尽量考虑流式布局,比如瀑布流,滚动页面等,这样由于页面可滚动,通常不会出现太大的问题。相比之下,把显示区域限制在一个屏幕里,就容易出问题

最完美的办法,出4张设计图,尺寸用具体数值而不是百分比。这种做法可以在每个屏幕上达到最佳效果。当然设计和开发的工作量也是最大的

2、点和分辨率的关系

iOS在开发的时候,用的单位是point,可是一般只有开发人员才理解这个概念,设计师画图时一般都是用分辨率。在4,5,6上都是2X分辨率,而在6P上是3X分辨率。在设计的时候,必须考虑这点

比如说,字体大小在2x屏上是24px,一定要尽量在3x上设计成36px,这样开发不需要做任何判断,字体大小自然会乘以1.5。一个反面的例子,设计图上2x屏是24px,3x屏是28px,这通常就是一个错误的设计。开发只能根据屏幕类型,设置UIFont的大小,而且28还无法被3整除

再比如说,设计一个元素距离左边距在2x屏上是10px,那么在3x屏上就设计成15px,开发也不需要做任何改动

兼容WEB页面

还有一种情况,某些页面需要在APP上实现,同时也要在web页面上实现。我们一开始错误的做法,是要求web页面去“精确”地实现APP的设计图。实际上这是不可能的,因为2点:

1、WEB页面使用的CSS布局方法,跟iOS界面开发的思路有很大差异,在实现上会有问题

2、WEB页面要面对的手机屏幕尺寸更多,无论是设计还是开发,要精确地匹配N种屏幕,根本不可能

所以,正确的做法,是针对WEB页面再出一张设计图,其中的尺寸用百分比决定:


如上图,在APP设计图里可以精确确定每个单元格的宽度,而在WEB里,应该指定每个单元格占屏幕宽度的50%。甚至,在WEB上应该用响应式布局来处理尺寸差异巨大的屏幕,不过这是另一个话题,不延伸了

UIFont到底有多大

这个是我们试错试出来的,其实非常简单,设置

[UIFont systemFontOfSize:16]

这个字体在2x屏上就是32px,在3x屏上会自然变成48px,非常方便

同理,设置一个UIView的frame为

CGRectMake(0, 0, 100, 100);

在2x屏上是200px * 200px的矩形,在3x屏上是300px * 300px的矩形
分享到:
评论

相关推荐

    ios 毕业设计 音乐播放器

    你需要设计美观且易用的界面,包括音乐列表、播放控制栏、歌曲信息显示等,同时考虑不同屏幕尺寸和横竖屏的适配。 8. **状态管理**:音乐播放的状态(如播放、暂停、停止)需要在各个界面间同步,这涉及MVC(Model-...

    短视频ios app.zip

    使用Interface Builder或代码编写UI,通过AutoLayout和Size Classes实现不同屏幕尺寸的适配。此外,还需设计美观且直观的交互界面,如录制按钮、预览窗口和时间指示器等。 【知识点5】:实时滤镜 为视频添加实时...

    ios源码_PDF电子书阅读器

    使用Storyboard或SwiftUI进行界面布局,通过Auto Layout或Size Classes确保界面在不同屏幕尺寸上适配。 3. 文件管理: iOS应用需要遵循苹果的安全沙箱机制,所有文件存储都在特定的沙箱目录下。为了保存用户的阅读...

    ios中瀑布流的使用

    6. **屏幕尺寸适配**:为了保证在不同尺寸的设备上都有良好的显示效果,你需要考虑屏幕的宽度和高度,并根据这些信息调整列数和单元格的大小。 7. **断点续传**:如果内容较大,例如大图,可以使用NSURLSession或...

    7.秦朝史话视听小说_播放模块_播放小说音频优化.zip

    10. **适配不同设备**:考虑到iOS设备的多样性,优化应确保在各种屏幕尺寸和硬件配置上都能正常工作。 综上所述,这个压缩包很可能包含了一套针对iOS平台的秦朝史话视听小说应用的播放模块优化方案,涉及音频处理、...

    高仿微信小视频

    9. **平台兼容性**:项目需兼容不同的Android和iOS版本,可能需要针对不同API级别进行适配,如使用Support Library或Targeting iOS的多个版本。 10. **测试与调试**:进行全面的单元测试、集成测试和UI测试,确保...

    仿微信发朋友圈选择图片

    - **适配兼容**:考虑到不同设备和屏幕尺寸,UI需要做适配,确保在各种环境下良好显示。 以上就是"仿微信发朋友圈选择图片"这个功能涉及的主要技术点,每个环节都需要开发者具备扎实的编程基础和良好的用户体验...

    杂志App整体解决方案.ppt

    - 下载管理:使用ASIHTTPRequest库(iOS)和Android-async-http库(Android)实现高效下载,包括异步请求、GZIP压缩、缓存、断点续传等功能。 5. 缓存机制: - 本地缓存:保存访问过的数据和下载内容,减少服务器...

    拍照和选择相册截图上传

    同时,考虑到不同设备的屏幕分辨率,可能还需要调整图片的显示尺寸。 6. **用户体验**: 提供预览功能让用户确认所选或拍摄的图片,以及清晰的进度指示和错误提示,都是提升用户体验的重要环节。此外,如果网络...

    手机电影下载系统源码_56wam.zip

    1. **移动平台适配**: - 移动端应用开发通常需要考虑iOS和Android两大主流平台,源码可能包含了针对这两个平台的特定优化。 - UI设计需遵循平台的交互规范,如Android的Material Design和iOS的Human Interface ...

    仿九游网手游平台完整网站源码,包含手机版和电脑版,手游推广下载必用

    同时,可能有针对不同设备(Android、iOS)的适配策略。 6. **推广系统**:为了便于手游推广,源码可能包含推广码、邀请码、分享功能的实现,以及推广效果的跟踪和统计。 7. **广告与盈利模式**:作为商业平台,...

    开心视听影音源码.zip

    作为一款跨平台的源码,它应该支持Windows、Linux、iOS、Android等多个操作系统。这意味着源码需要包含针对不同平台的适配代码,确保在各个平台上都能正常运行。 七、扩展功能 开心视听影音源码可能还包括了一些...

    即时聊天程序

    10. **移动平台适配**:随着智能手机的普及,即时聊天程序通常需要开发Android和iOS版本。这涉及到跨平台开发技术,如React Native、Flutter等,以实现不同平台的兼容性。 总之,一个类似于QQ的即时聊天程序涵盖了...

    M3U8播放器

    7. **多平台适配**:除了Windows版,部分M3U8播放器还提供了Mac、Android和iOS版本,实现跨平台播放。 8. **播放列表管理**:用户可以添加、编辑和管理多个M3U8播放列表,方便组织和播放不同的视频源。 9. **字幕...

    Mobile FLEX上传文件

    在移动应用中,可能还会包含关于目标设备和屏幕分辨率的信息,以确保应用在不同设备上正确运行。 在实现文件上传时,FLEX中的`FileReference`类是核心,它提供了选择本地文件、读取文件内容以及上传文件到服务器的...

    apicloud模块腾讯云点播上传

    APICloud的跨平台特性意味着,使用腾讯云点播上传模块开发的应用,不仅能在iOS和Android上运行,还可以适配各种屏幕尺寸和操作系统版本,实现一致的用户体验。 六、总结 APICloud的腾讯云点播上传模块结合了...

    卡通pq图片789好几个,开发图片的应用

    8. 移动端适配:如果应用是为手机或平板设计,那么需要考虑跨平台兼容性,如iOS和Android,以及不同的屏幕尺寸和分辨率。 9. 性能优化:由于图片处理通常需要较高的计算资源,性能优化是必不可少的,比如使用GPU...

    MsgShareApp:知识和基本知识

    以及针对不同设备的适配,确保在各种屏幕尺寸和硬件配置上运行良好。 最后,安全性是任何知识分享应用必须关注的点。MsgShareApp需要保护用户的隐私,采用加密技术对敏感信息进行保护,同时防止恶意攻击,例如SQL...

    walls:我的墙纸

    wallpaper应用的核心在于图像处理,这涉及到色彩管理、图像压缩、分辨率适配等多个方面。开发者需要理解不同图像格式(如JPEG、PNG、GIF等)的优缺点,以及如何在保持图像质量的同时减小文件大小,以便快速加载和...

Global site tag (gtag.js) - Google Analytics