zoukankan      html  css  js  c++  java
  • UI知识点三

    使用代码实现Autolayout的方法1

    • 创建约束

    +(id)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1 relatedBy:(NSLayoutRelation)relation toItem:(id)view2 attribute:(NSLayoutAttribute)attr2 multiplier:(CGFloat)multiplier constant:(CGFloat)c;

    * view1 :要约束的控件

    * attr1 :约束的类型(做怎样的约束)

    * relation :与参照控件之间的关系

    * view2 :参照的控件

    * attr2 :约束的类型(做怎样的约束)

    * multiplier :乘数

    * c :常量

    • 添加约束

         - (void)addConstraint:(NSLayoutConstraint *)constraint;

         - (void)addConstraints:(NSArray *)constraints;

    • 注意
      • 一定要在拥有父控件之后再添加约束
      • 关闭Autoresizing功能  
      • view.translatesAutoresizingMaskIntoConstraints = NO;

    使用代码实现Autolayout的方法2 - VFL

    • 使用VFL创建约束数组

    objc + (NSArray *)constraintsWithVisualFormat:(NSString *)format options:(NSLayoutFormatOptions)opts metrics:(NSDictionary *)metrics views:(NSDictionary *)views;

    * format :VFL语句

    * opts :约束类型

    * metrics :VFL语句中用到的具体数值

    * views :VFL语句中用到的控件

    • 使用下面的宏来自动生成views和metrics参数

    objc NSDictionaryOfVariableBindings(...)

    使用代码实现Autolayout的方法3 - Masonry

    • 使用步骤

      • 添加Masonry文件夹的所有源代码到项目中
      • 添加2个宏、导入主头文件  // 只要添加了这个宏,就不用带mas_前缀

        define MAS_SHORTHAND

        // 只要添加了这个宏,equalTo就等价于mas_equalTo

        define MAS_SHORTHAND_GLOBALS

        // 这个头文件一定要放在上面两个宏的后面

        import "Masonry.h"

        ```

    • 添加约束的方法

    // 这个方法只会添加新的约束

    [view makeConstraints:^(MASConstraintMaker *make) {

    }];

    // 这个方法会将以前的所有约束删掉,添加新的约束

    [view remakeConstraints:^(MASConstraintMaker *make) {

    }];

    // 这个方法将会覆盖以前的某些特定的约束

    [view updateConstraints:^(MASConstraintMaker *make) {

    }];

    • 约束的类型 objc 1.尺寸:widthheightsize 2.边界:leftleading ight railing opottom 3.中心点:centercenterXcenterY 4.边界:edges

    • tableView如何显示数据

      • 设置dataSource数据源
      • 数据源要遵守UITableViewDataSource协议
      • 数据源要实现协议中的某些方法

     / * 告诉tableView一共有多少组数据 /

    - (NSInteger)numberOfSectionsInTableView:(UITableView )tableView

    / * 告诉tableView第section组有多少行 /

    - (NSInteger)tableView:(UITableView )tableView numberOfRowsInSection:(NSInteger)section

    / * 告诉tableView第indexPath行显示怎样的cell /

    - (UITableViewCell )tableView:(UITableView )tableView cellForRowAtIndexPath:(NSIndexPath )indexPath

    / * 告诉tableView第section组的头部标题 /

    - (NSString )tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

    / * 告诉tableView第section组的尾部标题 /

    - (NSString )tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section ```

  • 相关阅读:
    java cocurrent并发包
    阻塞队列只有一个线程在同一时刻对其进行或者读或者写
    在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度。
    深入理解生产者消费者
    java并发编程阻塞队列
    高并发
    ClassLoader Java中类加载出现在哪个阶段,编译期和运行期? 类加载和类装载是一样的吗
    JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
    Java并发编程-Executor框架(转)
    Java主线程等待所有子线程执行完毕再执行解决办法(转)
  • 原文地址:https://www.cnblogs.com/wangliang2015/p/5392043.html
Copyright © 2011-2022 走看看