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 ```

  • 相关阅读:
    CPU的物理限制
    递归快还是循环(迭代)快?
    VS2010下测试程序性能瓶颈
    Qt编程之实现在QFileDialog上添加自定义的widget
    This application failed to start because it could not find or load the Qt platform plugin "windows"
    网络设备Web登录检测工具device-phamer
    Outlook数据提取工具readpst
    Xamarin无法调试Android项目
    Web应用扫描工具Wapiti
    Xamarin 2017.11.1更新
  • 原文地址:https://www.cnblogs.com/wangliang2015/p/5392043.html
Copyright © 2011-2022 走看看