iOS各种屏幕自动适配及颜色转换为十六进制

★★★XLJMatchScreen自动适配屏幕★★★

支持pod导入

pod 'XLJScreenMatching', '~> 1.0.3'

如果发现pod search XLJNewFeature 搜索出来的不是最新版本,需要在终端执行cd转换文件路径命令退回到desktop,然后执行pod setup命令更新本地spec缓存(可能需要几分钟),然后再搜索就可以了。

使用方法

直接在你的.pch文件中导入文件XLJMatchScreen.h

更新记录:

★★★★ 2016-11-23 ★★★★

1. 提交iOS手写代码时对控件位置在不同的屏幕上的自动适配问题。

2. 颜色自动转换成十六进制

接口:

/**
* 重写RectMake
*/
CG_INLINE CGRect
XLJ_CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height)
{
CGRect rect;
rect.origin.x = XLJ_MatchXFlaot(x);
rect.origin.y = XLJ_MatchYFlaot(y);
rect.size.width = XLJ_MatchWidthFlaot(width);
rect.size.height = XLJ_MathHeightFlaot(height); return rect;
}
- (void)testOne
{ UIView *vc = [[UIView alloc] initWithFrame:XLJ_CGRectMake(10, 80, XLJScreenWidth-20, 40)]; vc.backgroundColor = [UIColor orangeColor]; UILabel *lable = [[UILabel alloc] initWithFrame:XLJ_CGRectMake(10, 80, XLJScreenWidth-20, 40)];
lable.text = @"我是测试信息:XLJ_CGRectMake";
lable.font = [UIFont systemFontOfSize:XLJ_MatchXFlaot(14)];
lable.textAlignment = NSTextAlignmentCenter;
[self.view addSubview:vc];
[self.view addSubview:lable]; }

各屏幕尺寸

机型 屏幕尺寸 屏幕宽高(像素) 屏幕宽高(点) 模式
iPhone 5 4 640 x 1136 320 x 568 2x
iPhone 5S 4 640 x 1136 320 x 568 2x
iPhone 6 4.7 750 x 1134 375 x 667 2x
iPhone 6 Plus 5.5 1080 x 1920 414 x 736 3x
iPhone 6S 4.7 750 x 1134 375 x 667 2x
iPhone 6 Plus 5.5 1080 x 1920 414 x 736 3x
iPhone 7S 4.7 750 x 1134 375 x 667 2x
iPhone 7 Plus 5.5 1080 x 1920 414 x 736 3x

其实做适配,就是设计给的图是以什么为原型来设计的图片,比如以iphone5或iphone6来设计。然后再对图片进行放大或缩小的方式来匹配不同屏幕大小的iphone

那么我们来看一下,他的一个屏幕的宽高比是怎么样的?

机型 分辨率 宽高比
iphone4(s) 960*640 1.5
iphone5(s) 1136*640 1.775
iphone6 1334*750 1.779
iphone6Plus 1920*1080 1.778
iphone7 1334*750 1.779
iphone7Plus 1920*1080 1.778

这样我就可以得出:

iphone5(s),iphone6P的宽高比是一至的(16:9),这样就可以进行等比缩放,按宽度进行适配。
/**
XLJSrceenW 4/4s 5/5s 320 6/6s 375 6p/6sp 414
*/
static const float XLJUISrceenWidth = 375.0; /**
XLJSrceenH 4/4s 修改480 5/5s 568 6/6s 667 6p/6sp 736
*/
static const float XLJUISrceenHight = 667.0;

这样得出公式:

//按宽度适配

newScreenWidth = width*(ScreenWidth/320)

//按高度适配

newScreenHeight= height*(ScreenHeight/568)

在同样的逻辑分辨率下,可以通过scale参数识别是iPhone3GS还是iPhone4(s)。以下基于nativeScale参数,定义了探测机型是否为iPhone6+的宏:
--------------------------------------------------------------------------------
// not UIUserInterfaceIdiomPad
#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
// detect iPhone6 Plus based on its native scale
#define IS_IPHONE_6PLUS (IS_IPHONE && [[UIScreenmainScreen] nativeScale] == 3.0f)

使用宏的方式来进行适配

//以iphone6为基础,如果是以其它为基础设计,请自行修改既可。

iPhone4s屏幕的高度是480, 因此当屏幕尺寸大于iPhone4时, autoSizeScaleX和autoSizeScaleY即为当前屏幕和iPhone5尺寸的宽高比如:

如果是5,autoSizeScaleX=1,autoSizeScaleY=1;

如果是6,autoSizeScaleX=1.171875,autoSizeScaleY=1.17429577;

如果是6Plus,autoSizeScaleX=1.29375,autoSizeScaleY=1.2957;

注:以上只是提供了实现的另一种思路,本文介绍的实现方法跟这个不一样。

iOS 4s-6Plus屏幕自动适配及颜色转换为十六进制的更多相关文章

  1. Unity3d 手机屏幕自动适配

    我提到手机自动适配的一个方法中:postion和Scale,“比例”概念适配手机.原始资源是480*800 经过实际项目考验,个人感觉: 1,UICamera是自动适配分辨率,UI上也是拉伸.放大UI ...

  2. JavaScript随机生成颜色以及十六进制颜色 与RGB颜色值的相互转换

    /** * 随机生成颜色 * @return 随机生成的十六进制颜色 */ function randomColor(){ var colorStr=Math.floor(Math.random()* ...

  3. iOS 多尺寸屏幕适配

    Point Point可以理解为iOS程序员眼中的大小单位.它是iOS操作系统中的抽象的概念. Rendered Pixels可以理解为UI设计师眼中的大小单位. Physical Pixels 设备 ...

  4. 【iOS开发】多屏尺的自动适配 AutoLayout (纯代码方式)

    关于AutoLayout,最早从iOS6开始引入使用.   主要功能是使用约束,对视图进行相对布局,以适应不同屏尺的变换.   网上大量的资料都在介绍xib和storyboard,如何使用AutoLa ...

  5. iOS开发 多屏尺的自动适配(转)

    [iOS开发]多屏尺的自动适配 AutoLayout (纯代码方式) (2014-09-19 09:35:47) 转载▼ 标签: autolayout ios开发 xcode ui 分类: Xcode ...

  6. ios之开发屏幕适配和系统版本适配

    ios软件开发过程中很重要的一点是对系统和屏幕进行适配对系统的适配主要是IOS7以后和之前以及IOS8新增特性,屏幕适配主要是对不同设备采用不同的布局以最佳展示效果展现给用户. 针对系统的适配: IO ...

  7. iOS开发——屏幕尺寸适配

    对于屏幕尺寸适配,目前先指竖屏的方式适合方式1和2. 1.控件尺寸写死的方式,偶尔会用到屏幕的宽度和高度. UILabel *holdLabel = [[UILabel alloc]initWithF ...

  8. iOS 随笔小技巧 弱self 打印当前类行数列数,多人开发自动适配pch地址,获取设备uid的信息

    $(SRCROOT)/PrefixHeader.pch自动适配pch地址 __weak __block typeof(self) weakself = self; __weak typeof(self ...

  9. IOS学习——iphone X的适配

    说实话,对于一个刚入门iOS两个月的新手而言,在拿到这个任务的时候整个人都是懵逼的,怎么做适配?哪些地方需要适配?该怎么做?一个个问题搞得头都大了. 首先,啥都不管,先在iPhone X上运行起来看看 ...

随机推荐

  1. Database Replay和Consolidated Database replay

    简介 在数据库的迁移和升级场景中,我们经常会遇到一个问题:在做压力测试时,如何模拟真实的业务压力,解决这个问题的方法有很多,比如:应用方开发模拟程序或者使用压力测试工具模拟,如load runner, ...

  2. 谈谈如何使用Netty开发实现高性能的RPC服务器

    RPC(Remote Procedure Call Protocol)远程过程调用协议,它是一种通过网络,从远程计算机程序上请求服务,而不必了解底层网络技术的协议.说的再直白一点,就是客户端在不必知道 ...

  3. HTML文档头部

    前面的话   在声明文档类型之后,HTML文档的下一部分为<html>标签,告知浏览器应将括在<html>...</html>内的所有内容解析为HTML.然后是HT ...

  4. 15个关于Chrome的开发必备小技巧[译]

    谷歌Chrome,是当前最流行且被众多web开发人员使用的浏览器.最快六周就更新发布一次以及伴随着它不断强大的开发组件,使得Chrome成为你必备的开发工具.例如,在线编辑CSS,console以及d ...

  5. jquery插件的用法之cookie 插件

    一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...

  6. android studio 使用 jni 编译 opencv 完整实例 之 图像边缘检测!从此在andrid中自由使用 图像匹配、识别、检测

    目录: 1,过程感慨: 2,运行环境: 3,准备工作: 4,编译 .so 5,遇到的关键问题及其解决方法 6,实现效果截图. (原创:转载声明出处:http://www.cnblogs.com/lin ...

  7. JS继承之借用构造函数继承和组合继承

    根据少一点套路,多一点真诚这个原则,继续学习. 借用构造函数继承 在解决原型中包含引用类型值所带来问题的过程中,开发人员开始使用一种叫做借用构造函数(constructor stealing)的技术( ...

  8. 趣说游戏AI开发:曼哈顿街角的A*算法

    0x00 前言 请叫我标题党!请叫我标题党!请叫我标题党!因为下面的文字既不发生在美国曼哈顿,也不是一个讲述美国梦的故事.相反,这可能只是一篇没有那么枯燥的关于算法的文章.A星算法,这个在游戏寻路开发 ...

  9. [开发笔记]GCC 分支预测优化

    #define likely(x) __builtin_expect(!!(x),1)#define unlikely(x) __builtin_expect(!!(x),0) 用于优化在做分支判断的 ...

  10. 【干货分享】流程DEMO-付款申请单

    流程名: 付款申请单  业务描述: 包括每月固定开支.固定资产付款.办公用品付款.工资发放.个人所得税缴纳.营业税缴纳.公积金.社保缴纳和已签订合同的按期付款,最后是出纳付款,出纳核对发票. 流程发起 ...