iOS 的VFL知识详解

来源:互联网 发布:h3c 查看端口聚合 编辑:程序博客网 时间:2024/05/17 01:09


//[NSLayoutConstraint constraintsWithVisualFormat:<#(nonnull NSString *)#> options:<#(NSLayoutFormatOptions)#> metrics:<#(nullable NSDictionary<NSString *,id> *)#> views:<#(nonnull NSDictionary<NSString *,id> *)#>]

// 其中FormatVFL字符串例如 @"H:|-10-[view]-20-|"


// opts枚举参数


    // metrics是自定义的一个字典,这个字典里面的key可以写在format字串中。编译器解析时,自动替换为metrics字典中的value。比如:NSDictionary * metrics = @{@"left":@5,@"right":@5,@"height":@150.0};

//    NSString * format = @"|-left-[view]-right-|";

//    views是设置约束所有view的字典。比如:

//    NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(view); 这个宏的作用是把view映射成字典[NSDictionary dictionaryWithObjectsAndKeys:view, @"view", nil];

//    @"H:|-10-[view]-20-|",意思就是view距离superview的左边10其中H:表示横向,|表示父视图边缘,-10-表示10点距离,[view]表示子视图。

//   详解参考 http://blog.csdn.net/a1152024140/article/details/40823883

    

    

//V:表示纵向

//H:表示横向

//    |表示父视图边缘

//    -表示距离

//    >=表示视图间距、宽度或高度必须大于或等于某个值

//    <=表示视图间距、宽度或高度必须小宇或等于某个值

//    ==表示视图间距、宽度或高度必须等于某个值

//    @表示>=<===限制,最大为1000

    

    

    //示例 |-[view]-|视图处在父视图的左右边缘内

//    |-[view]视图处在父视图的左边缘

//    |[view]视图和父视图左边对齐

//    -[view]-设置视图的宽度高度

//    |-30.0-[view]-30.0-|表示离父视图左右间距30

//    [view(200.0)]表示视图宽度为200.0

//    |-[view(view1)]-[view1]-|表示视图宽度一样,并且在父视图左右边缘内

//V:|-[view(50.0)]视图高度为50

//V:|-(==padding)-[imageView]->=0-[button]-(==padding)-|表示离父视图的距离

//    Padding,这两个视图间距必须大于或等于0并且距离底部父视图为padding

//    [wideView(>=60@700)]视图的宽度为至少为60不能超过  700

//    如果没有声明方向默认为水平H:(原文写的V:

    

//    

//    [NSLayoutConstraint constraintWithItem:view1

//                                 attribute:NSLayoutAttributeLeft

//                                 relatedBy:NSLayoutRelationEqual

//                                    toItem:view2

//                                 attribute:NSLayoutAttributeRight

//                                multiplier:1

//                                  constant:10]

//    

//    翻译过来就是:view1的左侧,在,view2的右侧,再多10个点,的地方(经典)

//    测试效果

    UIView *view = [[UIView alloc] init];

    view.backgroundColor = [UIColor brownColor];

    view.translatesAutoresizingMaskIntoConstraints = NO;

    [self.view addSubview:view];

    

    //通过宏映射成[NSDictionary dictionaryWithObjectsAndKeys:v1, @"v1", v2, @"v2", nil];

    NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(view);

    //约束1 横向

    [self.view addConstraints:

     [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-10-[view]-20-|"

                                             options:0

                                             metrics:nil

                                               views:viewsDictionary]];

    //约束2 纵向

    [self.view addConstraints:

     [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-100-[view]-200-|"

                                             options:0

                                             metrics:nil

                                               views:viewsDictionary]];

    

    

    //    UIView *view;

    

    

//    [view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:<#(nonnull NSString *)#> options:<#(NSLayoutFormatOptions)#> metrics:<#(nullable NSDictionary<NSString *,id> *)#> views:<#(nonnull NSDictionary<NSString *,id> *)#>]];



0 0
原创粉丝点击