zoukankan      html  css  js  c++  java
  • 学习笔记之AutoLayout

    Align:用来添加对齐约束。

    Pin:添加标准约束,比如相对于其他视图的大小和位置。

    Reslove Auto Layout Issues:可以让Xcode 自动生成约束,或者基于约束把子视图的边框更新到正确的位置。

    Resizing Behavior:可以用来设置哪些类会继承这些约束。

    Pin

    item of new Contrains  就是你对一个view添加约束的时候,当你点了下面那个“add contrains”按钮后,这个view的frame会做出相应地响应(但子view的frame不会变化)。

    all frame of contrainer  这个view包括其子视图的frame都会变化。

    Resizing Behavior

    默认情况下,Siblings and Ancestors(兄弟姐妹和祖先)和Descendants(后代)都是选中状态。但是推荐把Silbings和Ancestors留空。如果选中Siblings and Ancestors,修改该视图时,父视图和同级视图会一起变动,如果选中Descendants,该视图和子视图会一起变动。

    备注:XCode6.3中没有找到Resizing Behavior这个约束按钮。

    用代码写Autolayout约束

    需要对使用的View的translatesAutoresizingMaskIntoConstraints的属性设置为false.
    即可开始通过代码添加Constraint,否则View还是会按照以往的autoresizingMask进行计算.
    而在Interface Builder中勾选了Ues Autolayout,IB生成的控件的translatesAutoresizingMaskIntoConstraints属性都会被默认设置false.

    添加或者移除约束。对于iOS 6或者iOS 7可以调用addConstraint(s):和removeConstraint(s):方法;对于iOS 8及更新的版本,直接设置约束的active属性或者调用activateConstraints:与deactivateConstraints:类方法。

    page3image1144

     

    注意:使用Visual Format来写约束时,NSLayoutConstraint.activateConstraints只能一个一个添加,不能写成数组,因为里面的每一个constraints已经包含多个约束。

    - (void)setContentCompressionResistancePriority:(UILayoutPriority)priority forAxis:(UILayoutConstraintAxis)axis

    - (void)setContentHuggingPriority:(UILayoutPriority)priority forAxis:(UILayoutConstraintAxis)axis

    用于设置优先级

    Hugging priority 确定view有多大的优先级阻止自己变大。

    Compression Resistance priority确定有多大的优先级阻止自己变小。

    默认优先级是750

    Taps 

    在使用Equal Heights/Widths Constraint时,要注意两个视图的比例关系,不要弄反了,即First Item 和 Second Item的关系。

    Constant表示当前控件相对于SuperView的x/y的相对距离 

    Priority表示该约束的优先级,范围是1-1000,1000最高。可以设置多个约束,通过优先级来调整视图变化。

    Bug调试

    界面布局出错又无错误日志时,可以在lldb中输入:

    po view.valueForKey(“_autolayoutTrace”) as NSString

    显示详细信息

    使用Snappy库简化代码

    1. 在当前项目的目录下执行:

    git submodule add https://github.com/Masonry/Snappy.git

    执行完会看到多了个Snappy目录。

    这样的项目,如果git共享给其他人,他们除了clone项目以外,还需要:

    git submodule update --init --recursive

    2. 将Snappy.xcodeproj加入到Xcode项目中,直接将文件拖拽进去即可

    3. 将Snappy.framework设置到项目中,General->Embedded Binaries

    4. 代码import SnapKit

     

  • 相关阅读:
    Celery详解
    JWT详解
    进程及进程池
    多线程详解
    python常用模块之os模块的用法
    python常用模块之paramiko与ssh
    reflect 反射
    http 静态文件
    模板渲染语言
    http web 开发
  • 原文地址:https://www.cnblogs.com/liuliuliu/p/4444724.html
Copyright © 2011-2022 走看看