iOS纯代码手动适配 [重写CGRectMake方法]

转载 2015年07月07日 18:10:03

首先说下让自己的程序支持iPhone6和6+,第一种使用官方提供的launch screen.xib,这个直接看官方文档即可,这里不再多述;第二种方法是和之前iPhone5的类似,比较简单,为iPhone6和6+添加两张特殊的png

iPhone6:命名:Default-375w-667h@2x.png 分辨率:750*1334

6+ 命名:Default-414w-736h@3x.png 分辨率:1242*2208

注意:

如果要在app的介绍页面里有“为iPhone6,6 plus优化”的字样就必须使用第一种方法,使用第二种方法的话还是会显示“为iPhone5优化”

 

下面说一下纯代码适配

首先iPhone5的界面一定要完全适配,这样才能完美适配6和6Plus。
首先,我么我们要观察一下5,6和6Plus的尺寸比例关系

\

很明显能看出这三种屏幕的尺寸宽高比是差不多的,因此可以在5的基础上,按比例放大来适配6和6Plus的屏幕。

 

在AppDelegate.h中

1

2

@property float autoSizeScaleX;

@property float autoSizeScaleY;

在AppDelegate.m中

1

2

3

4

5

6

7

8

9

10

11

12

13

14

#define ScreenHeight [[UIScreen mainScreen] bounds].size.height

#define ScreenWidth [[UIScreen mainScreen] bounds].size.width

 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

AppDelegate *myDelegate = [[UIApplication sharedApplication] delegate];

 

if(ScreenHeight > 480){

myDelegate.autoSizeScaleX = ScreenWidth/320;

myDelegate.autoSizeScaleY = ScreenHeight/568;

}else{

myDelegate.autoSizeScaleX = 1.0;

myDelegate.autoSizeScaleY = 1.0;

}

}

 

因为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;
现在我们获取了比例关系后,先来看一下如何解决代码设置界面时的适配。
CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height)这个方法使我们常用的设置尺寸的方法,现在我设置了一个类似于这样的方法。
在.m文件中

1

2

3

4

5

6

7

8

9

10

11

UIImageView *imageview = [[UIImageView alloc] initWithFrame:CGRectMake1(100, 100, 50, 50)];

 

CG_INLINE CGRect

CGRectMake1(CGFloat x, CGFloat y, CGFloat width, CGFloat height)

{

AppDelegate *myDelegate = [[UIApplication sharedApplication] delegate];

CGRect rect;

rect.origin.x = x * myDelegate.autoSizeScaleX; rect.origin.y = y * myDelegate.autoSizeScaleY;

rect.size.width = width * myDelegate.autoSizeScaleX; rect.size.height = height * myDelegate.autoSizeScaleY;

return rect;

}

这样,这个btn按钮在5,6和6Plus的位置和尺寸比例都是一样的。

 

如果整个项目做完后才开始做适配的话这个方法的优势就体现出来了,面对几十个工程文件,只需自定义并且替换你的CGRectMake方法,再加上storyBoradAutoLay这个方法就瞬间完成大部分甚至全部的适配,如果遇到tableView的或者其他的手动调整一下即可。

相关文章推荐

<iOS>CGRect常见方法和几个CGRect函数

主题:CGRect,每个视图都使用一个边框定义其界限。这个边框指定了视图的轮廓:位置、宽度和高度 内容:对于边框,通常表示由原点(CGPoint,x和y)和大小(CGSize,宽度和高度)组成的CGR...
  • zztBee
  • zztBee
  • 2015-10-13 10:04
  • 1732

重写UIView的方法,自定义view

回忆一下,这么个场景。 我们在一个界面上,要排列多个相同的元素。你马上就可以想到: 1.如果要用按钮,可以使用来UIButton布局。 如:   - (void) sho...

IOS Category不要重写原有类方法

原创Blog,转载请注明出处 blog.csdn.net/hello_hwc总结出来一句话 如果要重写现有类的方法,请考虑使用继承。 ------- 前言: Category是...

CGRect使用技巧

CGRect使用技巧 作者: xuguoxing 分类: Code Snippet, CoreGraphics, Fundation Utils, IOS, UIKit 发布时间: ...

iPhone开发中Cocoa中的CGRectMake具体用法

1、CGRectMake(origin.x,origin.y,size.width. Size.height)在代码中定义矩形。 如:[imageView setFrame:CGRectMake(1...

Swift3-CGRectMake在Xcode8上'CGRectMake' is unavailable in Swift

使用Xcode8创建UILabel并给出一个坐标时,这时报错提示:'CGRectMake' is unavailable in Swift,在网上找了很多创建label的代码,之前一直使用的都是CGR...

iphone绘图的几个基本概念CGPoint、CGSize、CGRect、CGRectMake、window(窗口)、视图(view)

我一般情况下不会使用interface builder去画界面,而是用纯代码去创建界面,不是装B,而是刚从vi转到xcode不久,不太习惯interface builder而已。当然如果需要我也会...

iOS重新定义系统自带的方法,如 重定义 CGRectMake 和 CGPointMake 可以解决屏幕适配的问题

在网上找了些屏幕适配的方法,因为之前的适配把屏幕划分为不同比例的部分,还有就是使用 storyBoard ,由于是纯代码开发,又是在基本功能都完成了之后 才适配,就想着找一些简单的适配方法 ...

iOS纯代码手动适配

首先说下让自己的程序支持iPhone6和6+,第一种使用官方提供的launch screen.xib,这个直接看官方文档即可,这里不再多述;第二种方法是和之前iPhone5的类似,比较简单,为iPho...

ios中object c纯代码开发屏幕适配处理方法

原文链接 ios中object c纯代码开发屏幕适配处理方法 纯代码开发屏幕适配处理方法: 为适配iphone各个版本的机型,对ui布局中的坐标采...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)