ios开发autolayout之VFL语言使用总结
来源:互联网 发布:最新电视直播软件 编辑:程序博客网 时间:2024/06/05 02:42
1.about VFL language
示例:
H:[cancelButton(72)]-12-[acceptButton(50)]
canelButton宽72,acceptButton宽50,它们之间间距12
H:[wideView(>=60@700)]
wideView宽度大于等于60point,该约束条件优先级为700(优先级最大值为1000,优先级越高的约束越先被满足)
V:[redBox][yellowBox(==redBox)]
竖直方向上,先有一个redBox,其下方紧接一个高度等于redBox高度的yellowBox
H:|-10-[Find]-[FindNext]-[FindField(>=20)]-|
水平方向上,Find距离父view左边缘默认间隔宽度,之后是FindNext距离Find间隔默认宽度;再之后是宽度不小于20的FindField,它和FindNext以及父view右边缘的间距都是默认宽度。(竖线“|”表示superview的边缘)
VFL的使用:
使用VFL来创建约束数组+ (NSArray *)constraintsWithVisualFormat:(NSString *)format options:(NSLayoutFormatOptions)opts metrics:(NSDictionary *)metrics views:(NSDictionary *)views;format :VFL语句opts :约束类型metrics :VFL语句中用到的具体数值views :VFL语句中用到的控件创建一个字典(内部包含VFL语句中用到的控件)的快捷宏定义NSDictionaryOfVariableBindings(...)
demo示例1:
- (void)test1{ UIView *blueView = [[UIView alloc] init]; blueView.backgroundColor = [UIColor blueColor]; // 不要将AutoresizingMask转为Autolayout的约束 blueView.translatesAutoresizingMaskIntoConstraints = NO; [self.view addSubview:blueView]; // 添加水平方向的约束 NSString *vfl = @"H:|-20-[abc]-20-|"; NSDictionary *views = @{@"abc" : blueView}; NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat:vfl options:kNilOptions metrics:nil views:views]; [self.view addConstraints:constraints]; // 添加竖直方向的间距 NSString *vfl2 = @"V:|-20-[abc(40)]"; NSDictionary *views2 = @{@"abc" : blueView}; NSArray *constraints2 = [NSLayoutConstraint constraintsWithVisualFormat:vfl2 options:kNilOptions metrics:nil views:views2]; [self.view addConstraints:constraints2];}
效果:
demo示例2:
- (void)test2{ UIView *blueView = [[UIView alloc] init]; blueView.backgroundColor = [UIColor blueColor]; // 不要将AutoresizingMask转为Autolayout的约束 blueView.translatesAutoresizingMaskIntoConstraints = NO; [self.view addSubview:blueView]; // 间距 NSNumber *margin = @20; // 添加水平方向的约束 NSString *vfl = @"H:|-margin-[blueView]-margin-|"; NSDictionary *views = NSDictionaryOfVariableBindings(blueView); NSDictionary *mertrics = NSDictionaryOfVariableBindings(margin); NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat:vfl options:kNilOptions metrics:mertrics views:views]; [self.view addConstraints:constraints]; // 添加竖直方向的间距 NSNumber *height = @40; NSString *vfl2 = @"V:|-margin-[blueView(height)]"; NSDictionary *mertrics2 = NSDictionaryOfVariableBindings(margin, height); NSArray *constraints2 = [NSLayoutConstraint constraintsWithVisualFormat:vfl2 options:kNilOptions metrics:mertrics2 views:views]; [self.view addConstraints:constraints2];}
效果:
demo示例3:
-(void)test3{ UIView *blueView = [[UIView alloc] init]; blueView.backgroundColor = [UIColor blueColor]; // 不要将AutoresizingMask转为Autolayout的约束 blueView.translatesAutoresizingMaskIntoConstraints = NO; [self.view addSubview:blueView]; UIView *redView = [[UIView alloc] init]; redView.backgroundColor = [UIColor redColor]; // 不要将AutoresizingMask转为Autolayout的约束 redView.translatesAutoresizingMaskIntoConstraints = NO; [self.view addSubview:redView]; // 间距 NSNumber *margin = @20; // 添加水平方向的约束 NSString *vfl = @"H:|-margin-[blueView]-margin-[redView(==blueView)]-margin-|"; NSDictionary *views = NSDictionaryOfVariableBindings(blueView, redView); NSDictionary *mertrics = NSDictionaryOfVariableBindings(margin); NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat:vfl options:NSLayoutFormatAlignAllTop | NSLayoutFormatAlignAllBottom metrics:mertrics views:views]; [self.view addConstraints:constraints]; // 添加竖直方向的间距 NSNumber *height = @40; NSString *vfl2 = @"V:[blueView(height)]-margin-|"; NSDictionary *mertrics2 = NSDictionaryOfVariableBindings(margin, height); NSArray *constraints2 = [NSLayoutConstraint constraintsWithVisualFormat:vfl2 options:kNilOptions metrics:mertrics2 views:views]; [self.view addConstraints:constraints2];效果:
0 0
- ios开发autolayout之VFL语言使用总结
- IOS autoLayout之使用VFL语言进行代码自动布局
- ios进阶--Autolayout 之VFL语言
- IOS开发笔记之AutoLayout及VFL探索
- ios开发autolayout之Masonry使用总结
- ios开发autolayout之代码实现Autolayout使用总结
- IOS开发-VFL语言
- iOS 之Autolayout(VFL)(一)
- iOS 一一 AutoLayout之VFL实现
- IOS之VFL使用
- AutoLayout 使用之代码实现(VFL)
- AutoLayout 使用之代码实现(VFL)
- Autolayout-VFL语言
- iOS autolayout和VFL
- iOS海哥开发笔记 (海哥原创,iOS 之Autolayout(VFL)(一))
- iOS海哥开发笔记 (海哥原创,iOS 之Autolayout(VFL)(二))
- Autolayout之VFL
- iOS开发 - 屏幕适配之VFL语言
- C# SQL查询代码
- performSelector 方法的自动俘获特性
- HTML 5 简介
- TokuDB的特点验证
- 【算法】链表
- ios开发autolayout之VFL语言使用总结
- .htaccess详解及.htaccess参数说明
- database link问题解决
- Android TabLayout与ViewPager实现动态Tab
- 文章标题
- AD域和第三方进行用户对接的注意事项
- 老黄聊架构:微服务架构落地之前,需要想清楚的几个关键问题
- hdu1754 I Hate It (分数修改)-线段树
- 微博MySQL优化之路--dockone微信群分享