iOS适配

1.各屏幕大小


设备


尺寸


像素



iPhone \ iPhone 3G \ iPhone 3GS


3.5 inch


320 x 480


320 x 480


iPhone 4 \ iPhone 4S


3.5 inch


640 x 960


320 x 480


iPhone 5 \ iPhone 5C \ iPhone 5S


4.0 inch


640 x 1136


320 x 568


iPhone6


4.7 inch


750 x 1334


375 x 667


iPhone6 plus


5.5 inch


1242 x 2208


414 x 736


iPad \ iPad2


9.7 inch


768 x 1024


768 x 1024


iPad 3(The new iPad) \ iPad4 \ iPad Air


9.7 inch


1536 x 2048


768 x 1024


iPad Mini


7.9 inch


768 x 1024


768 x 1024


iPad Mini 2(iPad Mini with retina display)


7.9 inch


1536 x 2048


768 x 1024

2.Autolayout

(1)代码实现Autolayout的步骤
利用NSLayoutConstraint类创建具体的约束对象
添加约束对象到相应的view上
- (void)addConstraint:(NSLayoutConstraint *)constraint;
- (void)addConstraints:(NSArray *)constraints;

(2)代码实现Autolayout的注意点
要先禁止autoresizing功能,设置view的下面属性为NO
view.translatesAutoresizingMaskIntoConstraints = NO;
添加约束之前,一定要保证相关控件都已经在各自的父控件上
不用再给view设置frame

注意点:

对于两个同层级view之间的约束关系,添加到它们的父view上

对于两个不同层级view之间的约束关系,添加到他们最近的共同父view上

对于有层次关系的两个view之间的约束关系,添加到层次较高的父view上

    UIView *blueView = [[UIView alloc] init];
    blueView.backgroundColor = [UIColor blueColor];
    // 不要将AutoresizingMask转为Autolayout的约束
    blueView.translatesAutoresizingMaskIntoConstraints = NO;
    [self.view addSubview:blueView];

    UIView *redView = [[UIView alloc] init];
    redView.backgroundColor = [UIColor redColor];
    // 不要将AutoresizingMask转为Autolayout的约束
    redView.translatesAutoresizingMaskIntoConstraints = NO;
    [self.view addSubview:redView];// 添加宽度约束:100

    /************************** 蓝色 **************************/
    // 添加高度约束:40
    NSLayoutConstraint *heightConstraint = [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:0.0 constant:40];
    [blueView addConstraint:heightConstraint];

    // 添加左边约束:blueView的左边距离父控件左边有20的间距
    NSLayoutConstraint *leftConstraint = [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeft multiplier:1.0 constant:20];
    [self.view addConstraint:leftConstraint];

    // 添加右边约束:blueView的右边距离父控件右边有20的间距
    NSLayoutConstraint *rightConstraint = [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeRight multiplier:1.0 constant:-20];
    [self.view addConstraint:rightConstraint];

    // 添加顶部约束:blueView的顶部距离父控件顶部有20的间距
    NSLayoutConstraint *topConstraint = [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1.0 constant:20];
    [self.view addConstraint:topConstraint];

    /************************** 红色 **************************/
    // 添加高度约束:蓝色等高
    NSLayoutConstraint *heightConstraint2 = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:blueView attribute:NSLayoutAttributeHeight multiplier:1.0 constant:0];
    [self.view addConstraint:heightConstraint2];

    // 添加左边约束:redView的左边 == 父控件的中心x
    NSLayoutConstraint *leftConstraint2 = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0];
    [self.view addConstraint:leftConstraint2];

    // 添加顶部约束:redView的顶部距离blueView的底部有20的间距
    NSLayoutConstraint *topConstraint2 = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:blueView attribute:NSLayoutAttributeBottom multiplier:1.0 constant:20];
    [self.view addConstraint:topConstraint2];

    // 添加右边约束:redView的右边 == blueView的右边
    NSLayoutConstraint *rightConstraint2 = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:blueView attribute:NSLayoutAttributeRight multiplier:1.0 constant:0];
    [self.view addConstraint:rightConstraint2];

3.Masonry

// 蓝色控件
    UIView *blueView = [[UIView alloc] init];
    blueView.backgroundColor = [UIColor blueColor];
    [self.view addSubview:blueView];

    // 红色控件
    UIView *redView = [[UIView alloc] init];
    redView.backgroundColor = [UIColor redColor];
    [self.view addSubview:redView];

    // 添加约束
    CGFloat margin = 20;
    CGFloat height = 50;
    [blueView makeConstraints:^(MASConstraintMaker *make) {
        make.left.equalTo(self.view.left).offset(margin);
        make.right.equalTo(redView.left).offset(-margin);
        make.bottom.equalTo(self.view.bottom).offset(-margin);
        make.height.equalTo(height);
        make.top.equalTo(redView.top);
        make.bottom.equalTo(redView.bottom);
        make.width.equalTo(redView.width);
    }];

    [redView makeConstraints:^(MASConstraintMaker *make) {
        make.right.equalTo(self.view.right).offset(-margin);
    }];
/**
 mas_equalTo:这个方法会对参数进行包装
 equalTo:这个方法不会对参数进行包装
 mas_equalTo的功能强于 > equalTo
 */

/**
 约束的类型:
 1.尺寸:width\height\size
 2.边界:left\leading\right\trailing\top\bottom
 3.中心点:center\centerX\centerY
 4.边界:edges
 */

/*
// 这个方法只会添加新的约束
  [blueView mas_makeConstraints:^(MASConstraintMaker *make) {

  }];

 // 这个方法会将以前的所有约束删掉,添加新的约束
 [blueView mas_remakeConstraints:^(MASConstraintMaker *make) {

 }];

 // 这个方法将会覆盖以前的某些特定的约束
 [blueView mas_updateConstraints:^(MASConstraintMaker *make) {

 }];
 */
时间: 2024-11-16 00:28:03

iOS适配的相关文章

Masonry记录——iOS适配

Masonry是iOS适配的第三方库,比较好用的一个,本人用的也不多,简单了解一些常用的方法,自己学习中,记录下来共勉. Masonry下载地址:https://github.com/SnapKit/Masonry 示例一:View居中处理 不管什么情况下,view都处于居中状态 __weak typeof(self) weakSelf = self; UIView * view = [UIView new]; view.backgroundColor = [UIColor redColor];

cocos2dx 2.2.5 CCEditBox IOS 适配问题

最近做着CCEditBox 时,发现点击后,里面的文字没有适配的 今天比较,所以解决一下这个问题 找到CCEditBox点击时响应的函数是  CCEditBoxImplIOS::openKeyboard 我们可以看看这个函数写了什么: -(void) openKeyboard { [[EAGLView sharedEGLView] addSubview:textField_];   // 添加 作为 subView [textField_ becomeFirstResponder]; } 完全没

iOS 适配/ autoLayout基本知识

适配历史 iPhone3GS.iPhone4\4s:没有屏幕适配最早开发里面的程序全部都是写死的iPad 旋转出来之后 Autoresizing问世iPhone5\5c\5s兼容各种不同的情况 系统适配 ios版本适配ios6 7 8 9 屏幕适配 iPhone3.5 4.0 4.7 5.5 iPad 7.9 9.7 开发面向点去开发 5s = 320 * 480 6 = 375 * 667 6p = 414 * 736autoResizing 必须关闭autolayout.sizeclass才

IOS 适配的几种模式

1.尺寸适配  1.原因  iOS7中所有导航栏都为半透明,导航栏(height=44)和状态栏(height=20)不再单独占用高度,即View的(0,0)坐标是从屏幕左上角开始的:而在iOS7之前的系统中,导航栏和状态栏单独占用高度,即View的(0,0)的坐标从导航栏下面开始的. 解决方案: 1> 修改window的frame坐标 这个思路是在iOS7系统里面把windows下拉20个pixel,这样可以让开status bar的位置,于是一切都恢复了正常. 好处是不用每个viewCont

iOS 适配iOS9

1.网络接口不支持https协议,在iOS9下 在iOS9下,系统默认会拦截对http协议接口的访问,因此无法获取http协议接口的数据. 解决方案(以下方法2选1): (1)暂时退回到http协议 具体方法: 在项目的info.plist中添加一个Key:NSAppTransportSecurity,类型为字典类型. 然后给它添加一个Key:NSAllowsArbitraryLoads,类型为Boolean类型,值为YES: 2016.01.06更新: 随着SDK版本的更新,这里需要以下更新.

ios 适配 (字体 以及 控件)

ios 字体适配 先看市面上iPhone4.5.6/6p的分辨率: iphone4 : 点数: 320x480 pt 渲染像素: 640x960 px 屏幕分辨率:640x960 px iphone5: 点数: 320x568 pt 渲染像素: 640x1136 px 屏幕分辨率:640x1136 px iphone6: 点数: 375x667 pt 渲染像素: 750x1334 px 屏幕分辨率:750x1134 px iphone6plus: 点数: 414x736 pt 渲染像素: 124

iOS 适配设计与切图

以iphone5作为设计标准:标尺图给的是640,美工给的切图是960坐标系下的素材3x,程序拿到标尺图,640的标尺除以2就是iphone5下的界面,3x的图乘以0.67就是2x. 以iphone6作为设计标准:标尺图给的是750,美工给的切图是1125坐标系下的素材3x,程序拿到标尺图,750的标尺除以2就是iphone6下的界面,3x的图乘以0.67就是2x. 手机淘宝的iPhone 6/iPhone 6 Plus适配版本即将提交App store审核.先晒一下我们采用的协作模式,再慢慢说

关于iOS适配问题

大家都知道在iOS开发当中对于UI适配问题可以从如下两个方面去考虑: 1.比例适配 2.利用autolayout自动布局 通常情况来说,利用auto自动布局是一个比较好的方案,开发者可以利用storyboard添加约束,以及sizeclass完美适配,如果你是比较喜欢纯代码的方式的话,那么PureLayout 以及Masonary也是不错的自动布局第三方库(目前项目当中也正在用PureLayout).但是,相信有不少人会有过这样的困惑,随着控件的约束太多,而导致约束冲突,然而对于自己来说看上去也

iOS适配:Masonry介绍与使用实践:快速上手Autolayout

随着iPhone的手机版本越来越多, 那么对于我们广大的开发者来说就是很悲催,之前一直使用代码里面layout的约束来适配, 现在推荐一个第三方Masonry,上手块,操作简单,只能一个字形容他 “爽”~~~ 进入正题: 1 MagicNumber -> autoresizingMask -> autolayout 以上是纯手写代码所经历的关于页面布局的三个时期 在iphone1-iphone3gs时代 window的size固定为(320,480) 我们只需要简单计算一下相对位置就好了 在i

iOS 适配

 机型变化 坐标:表示屏幕物理尺寸大小,坐标变大了,表示机器屏幕尺寸变大了: 像素:表示屏幕图片的大小,跟坐标之间有个对应关系,比如1:1或1:2等: ppi:代表屏幕物理大小到图片大小的比例值,如果ppi不变,则坐标和像素的比例不会变: iPhone 4以前 iPhone.iPhone3/3G机型未采用retina,坐标是320 x 480,屏幕像素320 x 480 ,他们一一对应,1:1关系.即一个坐标对应1个像素. iPhone 4/4s 机器采用了retina屏幕,坐标是320 x 4