iOS屏幕适配(尺寸适配)
屏幕尺寸适配:一
在.pch中加入以下代码,在定义每个尺寸值的时候都调用下边的宏
//以iphone7为例 定义 view相关的宽高宏
#define IPHONEHIGHT(b) [UIScreen mainScreen].bounds.size.height*((b)/1334.0)
#define IPHONEWIDTH(a) [UIScreen mainScreen].bounds.size.width*((a)/750.0)
//有导航栏和分栏的情况下高度
#define PhoneHight(d) ([UIScreen mainScreen].bounds.size.height-113.0)*((d)/1108.0)
//仅仅有导航栏的情况下高度
#define PHONEHIGHT(d) ([UIScreen mainScreen].bounds.size.height-64.0)*((d)/1206.0)
#define ScreenWidth CGRectGetWidth([UIScreen mainScreen].bounds)
#define ScreenHeight CGRectGetHeight([UIScreen mainScreen].bounds)
屏幕尺寸适配:二
创建项目-创建PCH文件:若要创建.pch , 在other里选择 PCH file,并需要修改一下设置。在build settings 里设置 Precompile Prefix Header的值为YES,并设置Prefix Header的路径。
创建一个扩展文件UIView+CreaFream.h,(如何创建扩展文件:创建一个objective-c file , 可以选择 category, extension ,protocol, empty 文件。选category 就能建立类别。)再不会了看网址 http://blog.csdn.net/idoshi201109/article/details/51735461
擦,差点忘了 PCH里边的东西了
.pch
#ifndef PrefixHeader_pch
#define PrefixHeader_pch //判断ios版本
#define iOS7 ([[UIDevice currentDevice].systemVersion doubleValue] >= 7.0 ) #import "UIView+CreaFream.h" #define IPHONE4 ScreenRect.size.width ==320 && ScreenRect.size.height ==480 #define IPHONE5 ScreenRect.size.width ==320 && ScreenRect.size.height ==568 #define IPHONE6 ScreenRect.size.width ==375 && ScreenRect.size.height ==667 #define IPHONE6p ScreenRect.size.width ==414 && ScreenRect.size.height ==736 //#define iPhone7 iPhone7P 自己补充,不过和6的尺寸一样的 #define MAS_SHORTHAND
#define MAS_SHORTHAND_GLOBALS #endif /* PrefixHeader_pch */
.h
#import <UIKit/UIKit.h> @interface UIView (CreaFream) //只需一个设置间隔 大小的方法
+(CGRect)GetRectWithX:(CGFloat)x Y:(CGFloat)y Width:(CGFloat)W Heigth:(CGFloat)H; @end
.m
#import "UIView+CreaFream.h" @implementation UIView (CreaFream) //实现方法
+(CGRect)GetRectWithX:(CGFloat)x Y:(CGFloat)y Width:(CGFloat)W Heigth:(CGFloat)H{ CGRect temptect = CGRectZero; //个人喜欢以iPhone 为基准 进行比例大小的对比 if (IPHONE6) {
temptect = CGRectMake(x,y, W, H); }else if ((IPHONE4)||(IPHONE5)){ CGFloat Xscole = 320/375.0;
CGFloat Yscole = 480/667.0; temptect = CGRectMake(x*Xscole, y*Yscole, W*Xscole, Yscole*H); }else if (IPHONE6p){ CGFloat Xscole = 414/375.0;
CGFloat Yscole = 736/667.0; temptect = CGRectMake(x*Xscole, y*Yscole, W*Xscole, Yscole*H); } return temptect;
}
@end
就是这样了,在使用的时候,具体就是这样的
//在创建基于 UIView 的试图控件的时候,Frame先不设定,如在创建一个UIImageView的时候:frame 之间用UIView 调用,就可以适应其他屏幕了 UIImageView * imgView = [[UIImageView alloc] initWithFrame:[UIView GetRectWithX:30 Y:30 Width:100 Heigth:100]];
iOS屏幕适配(尺寸适配)的更多相关文章
- iOS:界面适配(三)--iPhone不同机型或设备不同尺寸适配(屏幕适配)和系统适配
对于不同苹果设备,各个参数查看<iOS:机型参数.sdk.xcode各版本>. 机型变化 坐标:表示屏幕物理尺寸大小,坐标变大了,表示机器屏幕尺寸变大了: 像素:表示屏幕图片 ...
- iOS 的 APP 在系统中如何适配不同的屏幕的尺寸
iOS 的 APP 在系统中如何适配不同的屏幕的尺寸 标签: 2007年,初代iPhone发布,屏幕的宽高是 320 x 480 像素.下文也是按照宽度,高度的顺序排列.这个分辨率一直到iPhone ...
- iOS开发——屏幕尺寸适配
对于屏幕尺寸适配,目前先指竖屏的方式适合方式1和2. 1.控件尺寸写死的方式,偶尔会用到屏幕的宽度和高度. UILabel *holdLabel = [[UILabel alloc]initWithF ...
- 【转载】iOS屏幕适配设计
移动app开发中多种设备尺寸适配问题,过去只属于Android阵营的头疼事儿,只是很多设计师选择性地忽视android适配问题,只出一套iOS平台设计稿.随着苹果发布两种新尺寸的大屏iPhone 6, ...
- iOS 屏幕适配:autoResizing autoLayout和sizeClass
1. autoResizing autoresizing是苹果早期的ui布局适配的解决办法,iOS6之前完全可以胜任了,因为苹果手机只有3.5寸的屏幕,在加上手机app很少支持横屏,所以iOS开发者基 ...
- IOS - 屏幕适配
原文:Beginning Auto Layout Tutorial in iOS 7: Part 1 感谢翻译小组成员@answer-huang(博客)热心翻译.如果您有不错的原创或译文,欢迎提交给我 ...
- iOS屏幕适配知识
一.旋转处理 第一步:注册通知 [[NSNotificationCenter defaultCenter] addObserver:self ...
- 【转】iOS屏幕适配
一.iOS屏幕适配发展历程 设备 适配技术 4及以前(iPad未出) 直接用代码计算 有了iPad autoResizing 有不同屏幕的iPhone后 autoLayout 有更多不同屏幕的iPho ...
- 转:iOS 屏幕适配,autoResizing autoLayout和sizeClass图文详解
1. autoResizing autoresizing是苹果早期的ui布局适配的解决办法,iOS6之前完全可以胜任了,因为苹果手机只有3.5寸的屏幕,在加上手机app很少支持横屏,所以iOS开发者基 ...
随机推荐
- 移动端h5拍照压缩即时上传后台并预览
项目经理让迭代一个功能,实时预览并上传到后台的功能,听到这立马想起了几个第三方插件去实现,mui 和api cloude万万没想到的是这个app前面使用ios 和安卓原生写的,然后mui和api c ...
- BootStrap的入门和响应式的使用
在做前端开发中,其实有百分之四十的时间用来布局写样式,百分之三十用来写JS逻辑交互,百分之三十时间用来测试调bug,可以看的到的是,用在布局+样式的时候会比较多, 所以会有很多的前端框架诞生,例如bo ...
- Struts2-046验证脚本
下面分享一下Struts2-046验证的python脚本 #encoding:utf-8 import urllib2 from poster.encode import multipart_enco ...
- Python学习笔记 变量
蒟蒻高举横幅:部分内容转自廖雪峰的Python教学 1.Python是动态语言,即它的变量是没有类型的. !/usr/bin/env python a = 'ABC' print a a = 123 ...
- Python之可变类型与不可变类型
Python常见的数据类型有:数字 字符串 元组 列表 字典 不可变类型:数字 字符串 元组 可变类型: 列表 字典 a = 100 b = [100] def num1(x): x += x pri ...
- Java面试常见算法题
1.实现字符串反转 提供七种方案实现字符串反转 import java.util.Stack; public class StringReverse { public static String re ...
- HDU 5504 GT and sequence 模拟
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5504 思路:模拟 代码: #include<stdio.h>//------杭电5504 ...
- Mysql主从原理
MySQL的Replication(英文为复制)是一个多MySQL数据库做主从同步的方案,特点是异步复制,广泛用在各种对mysql有更高性能.更高可靠性要求的场合.与之对应的是另一个同步技术是MySQ ...
- javascript设计模式——迭代器模式
前面的话 迭代器模式是指提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示.迭代器模式可以把迭代的过程从业务逻辑中分离出来,在使用迭代器模式之后,即使不关心对象的内部构造,也 ...
- Sagit.Framework For IOS 开发框架入门开发教程2:一行代码实现引导页
前言: 开篇比较简单:Sagit.Framework For IOS 开发框架入门开发教程1:框架下载与环境配置 第二篇教程之前写了一半,感觉不太好写,而且内容单纯介绍API,要说的很多,又枯燥乏味. ...