AutoResizing & AutoLayout in Cocoa

[AutoResize]

控件初始化流程:

创建控件->设定预设坐标位置->设定自适应规则->AddToSubview(->自适应显示)

自适应规则示例:

//控件靠左上角(右边和下边自适应)

view.autoresizingMask = (UIViewAutoresizingFlexibleBottomMargin |

UIViewAutoresizingFlexibleRightMargin);

//控件靠右上角(左边和下边自适应)

view.autoresizingMask = (UIViewAutoresizingFlexibleLeftMargin |

UIViewAutoresizingFlexibleBottomMargin);

//控件宽等比例,靠上不变(左、右、宽自适应,下自适应)

view.autoresizingMask = (UIViewAutoresizingFlexibleLeftMargin |

UIViewAutoresizingFlexibleWidth |

UIViewAutoresizingFlexibleRightMargin |

UIViewAutoresizingFlexibleBottomMargin);

//横向距边框距离不变,宽度自适应,靠上位置不变

view.autoresizingMask = (UIViewAutoresizingFlexibleWidth |

UIViewAutoresizingFlexibleBottomMargin);

//跟随父控件等比缩放

view.autoresizingMask = (UIViewAutoresizingFlexibleLeftMargin |

UIViewAutoresizingFlexibleWidth|

UIViewAutoresizingFlexibleRightMargin |

UIViewAutoresizingFlexibleBottomMargin |

UIViewAutoresizingFlexibleHeight |

UIViewAutoresizingFlexibleTopMargin);

//跟随父控件缩放,距上、下、左、右边框位置不变

view.autoresizingMask = (UIViewAutoresizingFlexibleHeight |

UIViewAutoresizingFlexibleWidth);

[AutoLayout]

控件初始化流程:

创建控件(->设定预设坐标位置) ->AddToSubview ->设定自适应规则 (->自适应显示)

自适应代码示例:

UIView *view = [[UIView alloc] init];

[self.view addSubview:view];

UIView *item1 = [[UIView alloc] init];

UIView *item2 = [[UIView alloc] init];

UIView *item3 = [[UIView alloc] init];

UIView *item4 = [[UIView alloc] init];

[self.view addSubview:item1];

[self.view addSubview:item2];

[self.view addSubview:item3];

[self.view addSubview:item4];

///示例 1: 设定距边框为5pix宽高自适应且不小于(300,200)

NSMutableArray *constraits1 = [NSMutableArray array];

//设定X方向规则:距左右边距为5pix不变,宽度不小于300

[constraits1 addObjectsFromArray:[NSLayoutConstraint

constraintsWithVisualFormat:@"H:|-5-[view(>=300)]-5-|"

options:0

metrics:nil

views:NSDictionaryOfVariableBindings(view)]];

//设定Y方向规则:距上下边距为5pix不变,高度不小于200

[constraits1 addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-5-[view(>=200)]-5-|"

options:0

metrics:nil

views:NSDictionaryOfVariableBindings(view)]];

//规则生效

[self.view addConstraints:constraits1];

///示例 2: 设定X和Y方向等比缩放,且宽、高分别为父控件的0.9、0.8倍,中心位置对齐

NSMutableArray *constraits2 = [NSMutableArray array];

//设定X方向规则

//设定view的宽度为父控件的0.9倍

[constraits2 addObject:[NSLayoutConstraint

constraintWithItem:view

attribute:NSLayoutAttributeWidth

relatedBy:NSLayoutRelationEqual

toItem:self.view

attribute:NSLayoutAttributeWidth

multiplier:0.9

constant:0]];

//设定View的X中心位置跟父控件的中心位置一样

[constraits2 addObject:[NSLayoutConstraint

constraintWithItem:view

attribute:NSLayoutAttributeCenterX

relatedBy:NSLayoutRelationEqual

toItem:self.view

attribute:NSLayoutAttributeCenterX

multiplier:1.0 constant:0]];

//设定Y方向规则

//设定View的高度为父控件的0.8倍

[constraits2 addObject:[NSLayoutConstraint constraintWithItem:view

attribute:NSLayoutAttributeHeight

relatedBy:NSLayoutRelationEqual

toItem:self.view

attribute:NSLayoutAttributeHeight

multiplier:0.8

constant:0]];

//设定View的Y中心位置跟父控件的中心位置一样

[constraits2 addObject:[NSLayoutConstraint

constraintWithItem:view

attribute:NSLayoutAttributeCenterY

relatedBy:NSLayoutRelationEqual

toItem:self.view

attribute:NSLayoutAttributeCenterY

multiplier:1.0

constant:0]];

//规则生效

[self.view addConstraints:constraits2];

///示例 3: 设定两个控件 等宽

NSMutableArray *constraits3 = [NSMutableArray array];

[constraits3 addObjectsFromArray:[NSLayoutConstraint

constraintsWithVisualFormat:@"H:[item1(==item2)]"

options:0

metrics:nil

views:NSDictionaryOfVariableBindings(item1, item2)]];

//规则生效

[self.view addConstraints:constraits3];

///示例 4: 设定多个控件等间距,且控件宽度不小于50

NSMutableArray *constraits4 = [NSMutableArray array];

[constraits4 addObjectsFromArray:[NSLayoutConstraint

constraintsWithVisualFormat:@"H:|-5-[item1(>=50)-5-[item2(>=50)]-5-[item3(>=50)]-5-[item4(>=50)]]-5-|"

options:0

metrics:nil

views:NSDictionaryOfVariableBindings(item1, item2, item3, item4)]];

//规则生效

[self.view addConstraints:constraits4];

相关文档:

InterfaceBuild中使用AutoLayout

https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/Introduction/Introduction.html

Visual Format Language

https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/VisualFormatLanguage/VisualFormatLanguage.html#//apple_ref/doc/uid/TP40010853-CH3-SW1

时间: 2024-11-05 20:57:37

AutoResizing & AutoLayout in Cocoa的相关文章

iOS开发——屏幕适配篇&autoResizing autoLayout和sizeClass

autoResizing autoLayout和sizeClass详解 1. autoResizing autoresizing是苹果早期的ui布局适配的解决办法,iOS6之前完全可以胜任了,因为苹果手机只有3.5寸的屏幕,在加上手机app很 少支持横屏,所以iOS开发者基本不用怎么适配布局,所有的ui控件只要相对父控件布局就可以了,没错autoResizing就是一个相对于父控件的布 局解决方法:注意:它只能相对父控件布局:***在xcode中可以通过可视化的界面调整也可以通过代码去控制 在用

iOS开发UI篇—屏幕适配autoResizing autoLayout和sizeClass图文详解

1. autoResizing autoresizing是苹果早期的ui布局适配的解决办法,iOS6之前完全可以胜任了,因为苹果手机只有3.5寸的屏幕,在加上手机app很少支持横屏,所以iOS开发者基本不用怎么适配布局,所有的ui控件只要相对父控件布局就可以了,没错autoResizing就是一个相对于父控件的布局解决方法:注意:它只能相对父控件布局:***在xcode中可以通过可视化的界面调整也可以通过代码去控制 在用autoResizing的时候需要关闭autoLayout和sizeclas

屏幕适配Autoresizing / Autolayout / Mansory / 自定义Frame实现

1. 什么是适配: 适应.兼容不同版本不同尺寸的移动智能设备 iPhone尺寸:3.5.4.0.4.7.5.5inch iPad尺寸:7.9.9.7inch,横竖屏适配 2. 点与像素 非retaina屏:1个点 = 1个像素 retain屏:1个点 = 4个像素 3. 什么是Autolayout 1>  是一种“自动布局”技术,专门用来布局UI界面的 2> 自iOS 6开始引入,由于Xcode 4的不给力,当时并没有得到很大推广 3> 自iOS 7(Xcode 5)开始,Autolay

iOS Autoresizing Autolayout Size classes

Autoresizing:出现最早,仅仅能够针对父控件做约束(注意:要关闭Autolayout&Size classes才能够看到Autoresizing) 代码对应: UIView.h中的autoresizingMask属性 @property(nonatomic) UIViewAutoresizing autoresizingMask;    // simple resize. default is UIViewAutoresizingNone typedef NS_OPTIONS(NSUI

iOS 屏幕适配:autoResizing autoLayout和sizeClass

1. autoResizing autoresizing是苹果早期的ui布局适配的解决办法,iOS6之前完全可以胜任了,因为苹果手机只有3.5寸的屏幕,在加上手机app很少支持横屏,所以iOS开发者基本不用怎么适配布局,所有的ui控件只要相对父控件布局就可以了,没错autoResizing就是一个相对于父控件的布局解决方法:注意:它只能相对父控件布局:***在xcode中可以通过可视化的界面调整也可以通过代码去控制 在用autoResizing的时候需要关闭autoLayout和sizeclas

autoResizing autoLayout和sizeClass

原文网址: http://www.cnblogs.com/cxbblog/p/4166876.html 1. autoResizing autoresizing是苹果早期的ui布局适配的解决办法,iOS6之前完全可以胜任了,因为苹果手机只有3.5寸的屏幕,在加上手机app很 少支持横屏,所以iOS开发者基本不用怎么适配布局,所有的ui控件只要相对父控件布局就可以了,没错autoResizing就是一个相对于父控件的布 局解决方法:注意:它只能相对父控件布局:***在xcode中可以通过可视化的界

iOS学习资源搜集

最快速的学习方法是站在别人的肩上,当有人给你垫脚,那就必须往远处看.以下是遇到的一些好的学习资源. AutoLayout / SizeClass 开始iOS 7中自动布局教程(一) 开始iOS 7中自动布局教程(二) Auto Layout 使用心得(一)—— 初体验 Auto Layout 使用心得(二)—— 实现三等分 xcode6中自动布局autolayout和sizeclass的使用 xcode6下使用autolayout+sizeclass实践 ios8新特性屏幕适配之sizeclas

iOS-屏幕适配-UI布局

iOS 屏幕适配:autoResizing autoLayout和sizeClass 一.图片解说 -------------------------------------------------------------------------------------------------------------------------------------------------------------- 二.AutoLayout 1.前言 •在iOS程序中,大部分视图控制器都包含了大量

第一章读书笔记--关于View

Chapter1 Views Chapter1 Views The Window Experimenting With Views Subview and SuperView 可见性和透明度Visibility and Opacity Frame Bounds and Center 窗口坐标和屏幕坐标 Transform Trait Collection and Size Classes Layout 1 Autoresizing 2 AutoLayout 21 Constraints 22 A