关于iPhone设备不同显示尺寸适配的一些方法
关于iPhone设备不同显示尺寸适配的一些方法
------关于适配的理解------
1、什么是适配?
适配是对不同硬件和系统软件的适应,硬件包括屏幕显示,处理器,内存等等(目前主要是屏幕适配,iPhone 6s新增了3D Touch功能,其他硬件功能并没有实质性的改变),软件主要是不同iOS系统(有些在最新系统(通常会尽量向下兼容)不再支持的方法都需要做一些判断)。
2、为什么要适配?
适配是为了兼容不同的设备。
3、屏幕适配主要有哪些方式?
(1)等比例适配(所有视图按屏幕大小缩放,相对位置不变):a、纯代码;b、代码+storyboard(不使用自动布局);c、代码+storyboard(使用自动布局)。
(2)自由适配(主要使用自动布局):由于同一布局在不同大小的屏幕上显示效果不一样,如果仅仅是等比缩放,有时显示效果差强人意;在显示内容尺寸符合操作习惯(这个看自己咋想)的情况下,屏幕大小最大的区别是屏大显示内容多(如浏览新闻等,除了只有一些固定图片、控件等的简洁界面),a、约束内容的间距及相对大小;b、约束内容的宽高及相对位置;c、约束内容的间距、宽高。
------适配的一些方法------
情况一
(等比适配,代码+storyboard,不使用自动布局,建议用iPhone6的尺寸布局),通过获取屏幕尺寸,重定义CGRectMake,更新所有视图及其子视图的frame,完成等比适配。注意字体、图片,以及tableView、collectionView。
1、——————AppDelegate.h添加:
+ (void)ergodicView:(UIView *)view;
2、——————AppDelegate.m添加:
#define ScreenHeight [UIScreen mainScreen].bounds.size.height
#define ScreenWidth [UIScreen mainScreen].bounds.size.width
#define ScreenScaleX (ScreenWidth/375)//相对于苹果6屏幕
#define ScreenScaleY (ScreenHeight/667)
//按屏幕自动适配storyBoard所有视图
+ (void)ergodicView:(UIView *)view{
if (view.subviews.count != 0) {
for (UIView *temp in view.subviews) {
temp.frame = CGRectMake1(temp.frame.origin.x, temp.frame.origin.y, temp.frame.size.width, temp.frame.size.height);
[self ergodicView:temp];
}
}
}
//修改CGRectMake
CG_INLINE CGRect
CGRectMake1(CGFloat x, CGFloat y, CGFloat width, CGFloat height)
{
CGRect rect;
rect.origin.x = x * ScreenScaleX;
rect.origin.y = y * ScreenScaleY;
rect.size.width = width * ScreenScaleX;
rect.size.height = height * ScreenScaleY;
return rect;
}
--------------------
情况二
使用autolayout布局后,可重新设置视图的frame。等viewDidLoad加载完后,再延迟改变视图的frame,不延迟会被storyboard重新设置。也可以在viewDidLayoutSubviews或viewDidAppear重新设置frame
关于iPhone设备不同显示尺寸适配的一些方法的更多相关文章
- iPhone设备及屏幕适配
// // Common.h // 微信 // // #ifndef Common_h #define Common_h // iPhone设备及屏幕适配 //4的设备 #define KDevice ...
- 判断iPhone设备是carplay和iPod的方法
Carplay 参考代码: int UdevIsCarplay(int nVid, int nPid)//int UsbModeSwitch(pUdevStatus pStatus) { ; if ( ...
- ios5和ios6横竖屏支持及ipad和iphone设备的判断
ios5和ios6横竖屏支持及ipad和iphone设备的判断 判断是ipad还是iphone设备.此定义在PayViewControllerDemo-Prefix.pch 定义如下: #define ...
- ios7 以后准确获取iphone设备的MAC(物理地址)
通过参考 钉钉 项目,知道是通过wifi拿到路由的MAC地址.那么可不可以拿到iphone 设备的MAC 地址呢? 经过一番搜索,发现所有文章都是针对 ios 7 以前 可以拿到. 而且方法也都是同一 ...
- iphone手机怎么录屏 两种方法任你挑选
iphone手机怎么录屏呢?苹果手机拥有独特的Airlay镜像投屏,AirPlay的工作原理是当iPhone或IPAD与支持AirPlay技术的硬件,比如Apple TV等设备处在同一个wife的情况 ...
- iPhone批量删除照片/视频最好用的方法
iPhone批量删除照片/视频最好用的方法 经过大量的搜索和不懈的尝试,今天终于找到了批量删除iPhone照片最好用的方法, 于是决定写一篇博客为更多的果粉们造福! 1. 通过USB将iPhone手机 ...
- iphone抓取移动网络报文的方法
iphone抓取移动网络报文的方法 对iPhone进行越狱,网上有很多教程,这里不做说明.越狱后会有cydia这个app,首先对用户身份进行设置,选用开发者身份.打开这个应用,搜索openssh,找到 ...
- usb设备运行不正常的解决方法(转)
add by zhj:上午鼠标还用的好好的,下午就不能用了,插上之后提示“跟这台计算机连接的一个usb设备运行不正常”,尼玛,什么情况?我今天没安装软件啊,换了个USB接口也不行,在另一台电脑上试还是 ...
- 用launchscreen.storyboard适配启动图方法(二)
背景 之前有写一篇实现方式比较简单的随笔用launchscreen.storyboard适配启动图方法,顺便在评论区提了一下用autolayout适配启动图的思路,现把思路和流程记录下来. 思路 整体 ...
随机推荐
- js跨域问题
跨域概念:只要协议.域名.端口有任何一个不同,都被当作是不同的域. 跨域的主要原因是由于安全限制(同源策略, 即JavaScript或Cookie只能访问同域下的内容). 常用的跨域解决方案: 1.J ...
- 【Python基础学习二】定义变量、判断、循环、函数基本语法
先来一个愉快的Hello World吧,就是这么简单,不需要写标点符号,但是需要严格按照缩进关系,Python变量的作用域是靠tab来控制的. print("Hello World" ...
- jquery----中级函数
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 【转】JVM介绍
1. 什么是JVM? JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来 ...
- Openstack4j 在 Maven 中的构建
什么是 Openstack4j ? OpenStack的官方SDK是基于Python语言的,对于Java程序猿来说,将Python翻译过来未免麻烦.在Openstack官方的Wiki中(戳我直达),我 ...
- Python之路,Day4 - Python基础4
一.函数 (一)背景提要 现在老板让你写一个监控程序,监控服务器的系统状况,当cpu\memory\disk等指标的使用量超过阀值时即发邮件报警,你掏空了所有的知识量,写出了以下代码 1 2 3 4 ...
- 一行实现QQ群组头像,微信群组,圆角等效果. 并支持url直接加载图片
说点题外话. Coding中我们总是经历着这么几个过程. 学会使用: 不管是API也好, 开源库也好. 总是在最开始的学会去用. 了解实现原理: 可能会因为一些不兼容, 代码的异常状态的处理不够完美等 ...
- Ubuntu 14.4 配置
1.安装 Orcal Java 使用下面的命令安装,只需一些时间,它就会下载许多的文件,所及你要确保你的网络环境良好: sudo add-apt-repository ppa:webupd8team/ ...
- javascript 核心语言笔记- 2 语法结构
字符集 JavasSript 程序是用 Unicode 字符集 编写的,Unicode 是 ASCII 和 Latin-1 的超集,支持几乎所有在用的语言.ECMAScript 3 要求 JavaSc ...
- GO语言中json与map的转换
直接上代码(需要引入encoding/json包) // 当前程序的包名 package main // 导入其它的包 import ( "encoding/json" " ...