IOS开发指南第四章 IOS8多分辨率屏幕适配 学习

1 获取IOS设备屏幕信息

    CGSize iOSDeviceScreenSize  = [UIScreen mainScreen].bounds.size;

    NSString *s = [NSString stringWithFormat:@"%.0f x %.0f", iOSDeviceScreenSize.width, iOSDeviceScreenSize.height];

获取设备信息判断是否是ipone-判断横屏还是竖屏-判断设备型号

属性userInterfaceIdiom是枚举类型

if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone) {

        if (iOSDeviceScreenSize.height > iOSDeviceScreenSize.width) {//竖屏情况
            if (iOSDeviceScreenSize.height == 568) {//iPhone 5/5s/5c(iPod touch 5)设备
                NSLog(@"iPhone 5/5s/5c(iPod touch 5)设备");
            } else if (iOSDeviceScreenSize.height == 667) {//iPhone 6
                NSLog(@"iPhone 6 设备");
            } else if (iOSDeviceScreenSize.height == 736) {//iPhone 6 plus
                NSLog(@"iPhone 6 plus 设备");
            } else {//iPhone4s等其它设备
                NSLog(@"iPhone4s等其它设备");
            }
        }
        if (iOSDeviceScreenSize.width > iOSDeviceScreenSize.height) {//横屏情况
            if (iOSDeviceScreenSize.width == 568) {//iPhone 5/5s/5c(iPod touch 5)设备
                NSLog(@"iPhone 5/5s/5c(iPod touch 5)设备");
            } else if (iOSDeviceScreenSize.width == 667) {//iPhone 6
                NSLog(@"iPhone 6 设备");
            } else if (iOSDeviceScreenSize.width == 736) {//iPhone 6 plus
                NSLog(@"iPhone 6 plus 设备");
            } else {//iPhone4s等其它设备
                NSLog(@"iPhone4s等其它设备");
            }
        }
    }

}

2 竖屏中状态栏20点,导航栏44点,标签栏49点。一般内容视图图片大小就能设计出来了。

1)传统布局:为了保证竖屏和横屏都能显示控件,需要设置控件和屏幕之间的距离是绝对距离。view中的Autosizing属性设置。

模拟器旋转屏幕是command + 左右箭头

2)AutoLayout布局:constraint定义了控件和视图之间的关系  只能解决界面差别小的情况

对齐:创建居中和对齐约束

Pin:创建距离和位置相关约束 constrain to margins 对边缘的约束,一般不选中

通过约束的属性检查器修改

3 Size Class与ios 8多屏幕适配

Compact 紧凑<Any<Regular 正常

wCompact|hCompact 适用于除5.5寸iphone外所有iphone的横屏情况

wRegular|hCompact 适用于5.5寸iphone横屏情况

wCompact|hAny wCompact|hRegular 适用竖屏情况

预览功能:辅助编辑器-preview-main.storyboard  点击+可以添加预览设备

由于竖屏和横屏切换引起的布局问题快捷解决:Add Missing Constrains

4 屏幕滚动视图UITextView和UIScrollView的适配问题要结合代码去解决

frame属性:视图框架大小

contentSize属性:内容视图大小 CGSize类型

contentInset属性:在内容视图周围添加边框,一般为了放置工具栏等,含top bottom left right四个分量

contentOffset属性:内容视图与屏幕滚动视图坐标原点的偏移量 CGPoint类型  设置方法:-setContentOffset:animated:

*********

bounds(CGRect类型):frame和origin分量,这两个分量的类型是CGSize和CGPoint

*********

结局布局问题一般过程是:先使用size class-一次性添加约束-再微调 反复迭代

视图布局时会回调-(void)viewDidLayoutSubviews方法 可以设置视图

5 使用asset catalog 管理图片:不同分辨率的设备使用不同的图片

打开image.xassets-点击+选择菜单-设置设备-打开图片文件夹拖拽图片-在代码或InterfaceBuilder中使用

1*是不同显示屏 2*是4s Retina2*是5/5s/5c 3*是6/6p

时间: 2024-11-16 04:27:18

IOS开发指南第四章 IOS8多分辨率屏幕适配 学习的相关文章

iOS 开发指南 第11章 数据持久化之SQLite 学习

1 SQLite是无数据类型的数据库,就是字段不用指定类型.但从编程规范上说,应该在Create Table语句中指定数据类型:INTERGER 有符号的整数类型 REAL 浮点类型 TEXT 字符串类型 BLOB二进制类型 2 创建数据库: 准备:添加SQLite3库到工程中 TARGETS-Link Binary With Libraries-添加libsqlite3.dylib 使用sqlite3_open打开数据库-使用sqlite3_exec执行Creat Table语句,创建数据库-

《iOS开发指南》要改iOS8版本了,听听您的意见?

<iOS开发指南>要改iOS8版本了,听听您的意见?参加问卷同学均可获得智捷课堂50元代金卡一张,同时抽取一名同学赠送即将出版的基于iOS8的<iOS开发指南>一本,欢迎大家填写问卷http://www.diaochapai.com/survey/17a0cd7b-ef61-40ec-b51f-4e85acdd9fb5

IOS开发之绝对布局和相对布局(屏幕适配)

之前如果做过Web前端页面的小伙伴们,看到绝对定位和相对定位并不陌生,并且使用起来也挺方便.在IOS的UI设计中也有绝对定位和相对定位,和我们的web前端的绝对定位和相对定位有所不同但又有相似之处.下面会结合两个小demo来学习一下我们IOS开发中UI的绝对定位和相对定位.在前面的博客中所用到的UI事例用的全是绝对定位,用我们Storyboard拖拽出来的控件全是绝对定位的,就是我们可以同改变组件的frame来改变组件的位置和大小.而相对定位则不同,相对定位是参考组件周围的元素来确定组件的大小或

iOS开发指南 第8章 iOS常用设计模式 学习

设计模式是在特定场景下对特定问题的解决方案 1 单例模式 作用:解决“应用中只有一个实例”的问题,这个实例的作用是全局的,比如说是可以实现一些共享资源 方法的访问和状态的保持 实现原理:一般会封装一个静态属性,并提供静态实例的创建方法. *********** James Rumbaugh对类的定义是:类是具有相似结构.行为和关系的一组对象的描述符.类是面向对象系统中最重要的构造块.类图显示了一组类.接口.协作以及他们之间的关系. 建立类图的步骤: (1)研究分析问题领域确定系统需求. (2)确

iOS 开发指南 第12章 应用程序设置

1 概述 设置中的项目在应用中是不经常变化的,它决定了应用的基本特征和行为. 配置是在应用内部开辟出来的功能块,是应用的一部分,项目是经常变化的. 2 应用程序设置包 Settings Bundle是一个包文件,其中含有设置界面中所需的项目的描述 用到的照片 文字的本地化 子设置项目的描述等内容.通过finder打开. Root.plist文件描述根设置界面中设置的项目信息. en.lproj文件夹和Root.strings文件是和本地化有关,用于设置界面信息的本地化. 创建:iOS-Resou

iOS 开发指南 第16章 定位服务与地图应用

1 定位服务编码 使用Core Location框架 CLLocationManger:用于定位服务管理类,能够给我们提供位置信息和高度信息,也可以监控设备进入或离开某个区域,还可以获得设备的运行方向等. CLLocation:封装了位置和高度信息. CLLocationMangerDelegate 准备:加载Core Location框架 修改工程配置:Supporting Files-Info.pist添加NSLocationAlwaysUSageDescription和NSLocation

iOS 开发指南 第16章 定位服务与地图应用之使用苹果地图

1 显示地图 MKMapView MKMapViewDelegate 准备:加载MapKit.framework 设置地图样式 代理-实现代理方法 - (void)viewDidLoad { [super viewDidLoad]; 设置样式,枚举类型MKMapType self.mapView.mapType = MKMapTypeStandard; // self.mapView.mapType = MKMapTypeSatellite; 将当前视图控制器赋值给地图视图的delegate属性

IOS 开发指南 第三章学习

1 uiwindow 的rootwiew决定了应用程序的类型 2 反映视图关系的3个属性 superview:有且仅有一个(除了uiwindow) subviews:子视图的集合 window:获得当前视图的uiwindow对象 3 按钮至少有两种:uibutton uibarbuttonitem 4 selector是一个指针变量,意思是将方法指定给控件去做 sender是事件源,指要使用这个方法的控件对象 5 使控件的事件与动作关联在一起 1)addTarget:action:forCont

iOS 开发指南 第15章 访问Web Service之REST Web Service

***** 在电脑术语中,统一资源标识符(Uniform Resource Identifier,或URI)是一个用于标识某一互联网资源名称的字符串. 该种标识允许用户对任何(包括本地和互联网)的资源通过特定的协议进行交互操作.URI由包括确定语法和相关协议的方案所定义. Web上可用的每种资源 -HTML文档.图像.视频片段.程序等 - 由一个通用资源标识符(Uniform Resource Identifier, 简称"URI")进行定位. ***** 1 REST Web Ser