转自    http://blog.sina.com.cn/s/blog_9564cb6e0101wv9o.html

controller和View的责任分配:

1、View指定固有的content size

leaf-level views,比如buttons相比分配位置的代码,它自己更应该知道它自己size是多大。intrinsicContentSize,告诉layout system在一个视图内有一些内容它并不了解;这个方法在子类中被重写,被layout system调用。一个View可返回它的宽高或者NSViewNoInstrinsicMetric

2、Controller 指定intrinsic多重要

尽管一个View指定了它的固定content size,这个View的使用者会说intrinsic多重要.setContentHuggingPriority:forOrientation:   setContentCompressionResystancePriority:forOrientation:

3、如果实现了一个自定义View:1)updateConstraints  2)layout

setTranslatesAutoresizingMaskIntoConstraints: view的autoresing Mask是否需要被翻译成constriants.因为通常情况下view的autoresing mask产生的constraints完全指定了view的位置,如果想要constraints更加灵活,必须忽略autoresingMask,既NO。IB创建的视图已经设置为NO。

Visual Format Language

1、standard space: [button]-[textField]

2、width constraint :[button(>=50)]

3、Connection to superView : |-50-[orchbox]-50-|

4、Vertical Layout: V:[topField]-10-[bottomField]

5、Flush Views:[maroonView][oceanView]

6、Priority:[button(100@20)]

7、Equal Width:  [button1(==button2)]

8、Multple predicates: [flexibleButton(>=70,<=90)]

NSLayoutFormatOptions

NSLayoutFormatAlignAllLeft  = NSLayoutAttributeLeft  对象的标准矩形区域左侧

NSLayoutFormatAlignAllRight = NSLayoutAttributeRight 对象的标准矩形区域右侧

NSLayoutFormatAlignAllTop = NSLayoutAttributeTop  对象的标准矩形区域上侧

NSLayoutFormatAlignAllBottom = NSLayoutAttributeBottom  对象的标准矩形区域下侧

NSLayoutFormatAlignAllLeading = NSLayoutAttributeLeading  对象的标准矩形区域前沿

NSLayoutFormatAlignAllTrailing = NSLayoutAttributeTrailing 对象的标准矩形区域末尾

NSLayoutFormatAlignAllCenterX = NSLayoutAttributeCenterX 对象的标准矩形区域x轴中点

NSLayoutFormatAlignAllCenterY = NSLayoutAttributeCenterY 对象的标准矩形区域y轴中点

NSLayoutFormatAlignAllBaseLine = NSLayoutAttributeBaseLine  对象的baseline

setContentHuggingPriority:forOrientation:   在指定方向上,view反对超过它的固定大小,NSLayoutPriorityDefaultLow,NSLayoutPriorityDefaultHight

setContentCompressionResistancePrioriry:Orientation:  在指定方向上,view小于它的固定大小的抵抗优先级

NSLayoutPriority :

NSLayoutPriorityRequired  1000   ;

NSLayoutPriorityDefaultHigh  750  button不压缩它的内容;

NSLayoutPriorityDragThatCanResizeWindow 510;

NSLayoutPriotiryWindowSizeStayPut 500  窗口大小保持不变,实际上你希望比它大或小;

NSLayoutPriorityDragCannotResizeWindow  490  splite view拆分,拖动不改变窗口大小;

NSLayoutPriorityDefaultLow 250 一个button水平包含它的内容;

NSLayoutPriorityFittingSizeCompression 50;

requiresConstraintBasedLayout   自定义view应该重写这个方法返回YES,如果它不能使用autoresing正确的布局

AutoLayout(转)的更多相关文章

  1. 使用Autolayout实现UITableView的Cell动态布局和高度动态改变

    本文翻译自:stackoverflow 有人在stackoverflow上问了一个问题: 1 如何在UITableViewCell中使用Autolayout来实现Cell的内容和子视图自动计算行高,并 ...

  2. Masonry介绍与使用实践:快速上手Autolayout

    1 MagicNumber -> autoresizingMask -> autolayout 以上是纯手写代码所经历的关于页面布局的三个时期 在iphone1-iphone3gs时代 w ...

  3. 利用代码添加autolayout约束

    1.概述 通常我们通过storyboard能够完成的,代码也能够完成,所以这里介绍下代码实现约束的添加,通常我们不这么干(在不使用第三方框架的情况下,使用系统自带的类添加约束特别繁琐),所以这里仅仅简 ...

  4. 【原】iOS学习之苹果原生代码实现Autolayout和VFL语言

    1.添加约束的规则 在创建约束之后,需要将其添加到作用的view上 在添加时要注意目标view需要遵循以下规则: 1)对于 两个同层级view之间 的约束关系,添加到它们的父view上 2)对于 两个 ...

  5. iOS学习笔记——AutoLayout的约束

    iOS学习笔记——AutoLayout约束 之前在开发iOS app时一直以为苹果的布局是绝对布局,在IB中拖拉控件运行或者直接使用代码去调整控件都会发上一些不尽人意的结果,后来发现iOS在引入了Au ...

  6. iOS AutoLayout的用法

    添加约束 代码实现Autolayout的步骤 利用NSLayoutConstraint类创建具体的约束对象 添加约束对象到相应的view上 - (void)addConstraint:(NSLayou ...

  7. AutoLayout(自动布局)

    1. iOS两种自适应布局方式:(修正说明:) -AutoLayout(自动布局) + SizeClasses(尺寸类别) -Autoresizing (自动调整尺寸/弹簧式调整尺寸) 前者 Auto ...

  8. iOS-自动布局Autolayout(原创)

    前言 基础知识 在一定情况下我们需要用到自动布局(autolayout) 这样我们就能使视图与视图之间的位置相互关联起来 横向:距离父视图左侧100 视图本身的宽度最小是100 距离父视图右侧是100 ...

  9. iOS - XIB之AutoLayout添加约束

    XIB--AutoLayout添加约束 仿QQ登录界面: 说明:以下各图背景红色只是方便看清楚: 1.创建工程:创建xib文件 2.打开xib文件: (1).创建头像: 拖控件:uiimageview ...

  10. iOS AutoLayout自动布局&Masonry介绍与使用实践

    Masonry介绍与使用实践:快速上手Autolayout http://www.cnblogs.com/xiaofeixiang/p/5127825.html http://www.cocoachi ...

随机推荐

  1. [BZOJ 1576] [Usaco2009 Jan] 安全路经Travel 【树链剖分】

    题目链接: BZOJ - 1576 题目分析 首先Orz Hzwer的题解. 先使用 dijikstra 求出最短路径树. 那么对于一条不在最短路径树上的边 (u -> v, w) 我们可以先沿 ...

  2. dt dd 如何在同一行上

    <style> dl{clear:left;} dt,dd{float:left;} </style> <dl> <dt>test </dt> ...

  3. struts2接收参数——域模型、DTO

    在开始介绍域模型之前我们要明白一点,为什么通过域模型我们可以把参数这么方便的在后台接收. 那是因为 通过参数拦截器(params interceptor)自动的把前台传过来的参数给域对象(domain ...

  4. 日志式文件系统:SGI的xfs, Reiserfs, IBM的jfs, ext3fs

    日志文件(Log files)是包含系统消息的文件,包括内核.服务.在系统上运行的应用程序等.不同的日志文件记载不同的信息.日志文件系统比传统的文件系统安全,因为它用独立的日志文件跟踪磁盘内容的变化. ...

  5. 【模拟】Codeforces 710A King Moves

    题目链接: http://codeforces.com/problemset/problem/710/A 题目大意: 国际象棋标准8X8棋盘,国王能往周围8个方向走.输入国王的位置,输出当前国王能往几 ...

  6. osg

    智能指针使用: osg::Geode* geode=new osg::Geode;//新建Geode指针 osg::ref_ptr<osg::Geode>geodePtr=geode;// ...

  7. rpm常用操作

    1.查询.检查软件包 rpm {-q|--query} [select-options] [query-options] rpm {-V|--verify} [select-options] [ver ...

  8. SRM 397(1-250pt)

    题意:对于一个长度n的数列(由1-n组成,n <= 8),每次操作可以reverse k个连续的数.问最少多少次操作可以将该数列转化成递增的数列. 解法:就是一个BFS.只是由于最开始学习BFS ...

  9. scipy安装失败

    pip install scipy安装失败 可以从uci网站下载wheel安装包然后执行pip install xx.whl进行安装 http://www.lfd.uci.edu/~gohlke/py ...

  10. openresty安装lua和nginx相关

    server{ listen ; server_name a.com; index index.php; root /usr/share/nginx/html; location / { if (!- ...