zoukankan      html  css  js  c++  java
  • IOS中AutoLayout

    •AutoLayout是一种基于约束的,描述性的布局系统
    –基于约束:和以往定义frame的位置和尺寸不同,AutoLayout的位置确定是以所谓相对位置的约束来定义的,比如x坐标为superView的中心,y坐标为屏幕底部上方10像素等
    –描述性:约束的定义和各个view的关系使用接近自然语言或者可视化语言的方法来进行描述
    –布局系统:用来负责界面的各个元素的位置。
    •AutoLayout为开发者提供了一种不同于传统对于UI元素位置指定的布局方法。以前,不论是在IB里拖放,还是在代码中写,每个UIView都会有自己的frame属性,来定义其在当前视图中的位置和尺寸。而使用AutoLayout,就变为了使用约束条件来定义view的位置和尺寸。
    AutoLayout的优势:
    •解决不同分辨率和屏幕尺寸下view的适配问题,同时也简化了旋转时view的位置的定义。原来在底部之上10像素居中的view,不论在旋转屏幕或是更换设备(iPad、iPad mini、iPhone 4或者是iPhone5)的时候,始终还在底部之上10像素居中的位置,不会发生变化
    •使用约束条件来描述布局,view的frame会依据这些约束来进行计算。
     
    创建约束:

    + (id)constraintWithItem:attribute:relatedBy:toItem: attribute:multiplier:constant:

    参数说明:

    WithItem:要约束的对象

    attribute:对象的布局属性

    relatedBy:布局关系

    toItem:参照对象

    attribute:参照对象的布局属性

    multiplier:乘数

    constant:常数

    自动布局的核心公式

    Object1.property1=(object2.property2*multiplier)+constant value

    ————————————————————————————————————————

    •添加约束

    -(void)addConstraint:(NSLayoutConstraint *)constraint

    •刷新约束的改变

    -setNeedsUpdateConstraints

    -layoutIfNeeded


    [button setTranslatesAutoresizingMaskIntoConstraints:NO];

    ------------------------------------------------------------------------------

    // 2.1 水平方向的约束

    NSLayoutConstraint *constraintX = [NSLayoutConstraint constraintWithItem:button attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterX multiplier:1.0f constant:0.0f];

    [self.view addConstraint:constraintX];

    // 2.2 垂直方向的约束

    NSLayoutConstraint *constraintY = [NSLayoutConstraint

    =========================================

    测试演练5——VFL演练(1)

    // 1. 创建三个按钮:top、center、bottom

    // 2. 三个按钮宽度为100点

    // 3. 三个按钮距离屏幕右侧20点

    // 4. bottom按钮距离屏幕底部20点,每个按钮纵向间距为20点

    NSDictionary *viewDict = NSDictionaryOfVariableBindings(top, center, bottom);

    NSArray *consh1 = [NSLayoutConstraint constraintsWithVisualFormat:@"H:[top(100)]-20-|" options:0 metrics:nil views:viewDict];

    ……

     NSArray *consv = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[top(40)]-20-[center(40)]-20-[bottom(40)]-20-|" options:0 metrics:nil views:viewDict];

    ……

  • 相关阅读:
    Microsoft.Jet.Oledb.4.0 提供者並未登錄於本機電腦上
    asp.net将本地Excel上传到服务器并把数据导入到数据库
    报错:Cannot insert explicit value for identity column in table 't' when identity_insert is set to OFF
    select * from table where 1=1让您茅塞顿开(转)
    cessss
    从“黑掉Github”学Web安全开发
    聊聊JVM的年轻代
    Deployment options
    Put your application in production
    Manage application.conf in several environments
  • 原文地址:https://www.cnblogs.com/changxs/p/3434477.html
Copyright © 2011-2022 走看看