关于界面布局约束的方法有很多,纯代码布局,可以使用官方原生布局(很繁琐)、VFL、Masonary第三方等,在xib或者storyboard中也可以使用Autolayout的界面约束进行布局约束。
我今天要着重记录的是VFL 的布局方式,以前看过相关的博客文档,试着写过,但是因为约束的那串字符串有点复杂也就浅尝辄止,最近要写项目,突然发现VFL布局的奇妙之处,所以在此记录一下VFL的使用。
 

 
使用VFL进行约束时你完全不需要对view进行frame设置,所有的布局信息全都融合在一串字符串里面,对于纯代码布局来说,还是一种不错的布局方式。
有点喜欢这种不需要添加frame的约束方式了。
 

 
注意点:
/*
*
*VFL 使用:
*非scrollView:约束一个view需要上下左右边界四个条件就可以进行约束了
*scrollView:约束一个scrollView的subview不仅仅需要上下左右四个边界,你还必须对subview的高度和跨度
*进行约束,因为VFL中会根据高度和宽度进行contentsize的自动适配
*
*/

//VFL 字符串带变量:
NSString *toolbarVfV = [NSString stringWithFormat:@"V:[toolbarView(%f)]-(-%f)-|",ePayWapViewToolbarHeight,ePayWapViewToolbarHeight];

 
本例测试实现:vertical方向布局四个View,同时在其中一个view中实现水平布局(有点类似于前端以及安卓中的先大再小的布局方式)
,进入正题直接上Demo:
 
 
 /*
 *
 *vertical方向布局
 *
 */
-(void)setupVerticalLayout{
    //
    UIView *blueView=[[UIView alloc]init];
    blueView.backgroundColor=Color_1;
    //
    UIView *redView=[[UIView alloc]init];
    redView.backgroundColor=Color_5;
    //
    UIView *yellowView=[[UIView alloc]init];
    yellowView.backgroundColor=Color_4;
    //
    UIView *grayView=[[UIView alloc]init];
    grayView.backgroundColor=Color_3;
   
    //使用VFL时一定要加上这几句代码:
    [blueView setTranslatesAutoresizingMaskIntoConstraints:NO];
    [redView setTranslatesAutoresizingMaskIntoConstraints:NO];
    [yellowView setTranslatesAutoresizingMaskIntoConstraints:NO];
    [grayView setTranslatesAutoresizingMaskIntoConstraints:NO];
   
    [self.view addSubview:blueView];
    [self.view addSubview:redView];
    [self.view addSubview:yellowView];
    [self.view addSubview:grayView];
   
    NSDictionary *views=NSDictionaryOfVariableBindings(blueView,redView,yellowView,grayView);
    NSDictionary *metrics=@{@"margin":@10};
   
    //vertical 方向约束
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[blueView(==100)]-margin-[redView(==150)]-margin-[yellowView(==100)]-margin-[grayView]-margin-|" options:0 metrics:metrics views:views]];
   
    //blueView 的horizon方向
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-margin-[blueView]-margin-|" options:0 metrics:metrics views:views]];
    //redView 的horizon方向
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-margin-[redView]-margin-|" options:0 metrics:metrics views:views]];
    //yellowView 的horizon方向
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-margin-[yellowView]-margin-|" options:0 metrics:metrics views:views]];
    //grayView 的horizon方向    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-margin-[grayView]-margin-|" options:0 metrics:metrics views:views]];    [self setupHorisonalLayout:redView];}
 
上面的Demo实现了是个view的vertical方向的布局约束,
 

 
下面实现四个horizon方向的view的布局:
 
/*
 *
 *horizon方向布局
 *
 */
-(void)setupHorisonalLayout:(UIView*)containtView{
    //
    UIView *blueView=[[UIView alloc]init];
    blueView.backgroundColor=Color_1;
    //
    UIView *redView=[[UIView alloc]init];
    redView.backgroundColor=Color_2;
    //
    UIView *yellowView=[[UIView alloc]init];
    yellowView.backgroundColor=Color_3;
    //
    UIView *grayView=[[UIView alloc]init];
    grayView.backgroundColor=Color_4;
   
   
    [blueView setTranslatesAutoresizingMaskIntoConstraints:NO];
    [redView setTranslatesAutoresizingMaskIntoConstraints:NO];
    [yellowView setTranslatesAutoresizingMaskIntoConstraints:NO];
    [grayView setTranslatesAutoresizingMaskIntoConstraints:NO];
   
    [containtView addSubview:blueView];
    [containtView addSubview:redView];
    [containtView addSubview:yellowView];
    [containtView addSubview:grayView];
   
    NSDictionary *views=NSDictionaryOfVariableBindings(blueView,redView,yellowView,grayView);
   
   
    NSDictionary *metrics=@{@"margin":@20};
   
   
    //水平方向约束
    [containtView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-margin-[blueView]-margin-[redView(blueView)]-margin-[yellowView(redView)]-margin-[grayView(yellowView)]-margin-|" options:0 metrics:metrics views:views]];
   
   
    //blueView 的竖直方向
    [containtView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[blueView(==30)]" options:0 metrics:nil views:views]];
    //redView 的竖直方向
    [containtView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[redView(blueView)]" options:0 metrics:nil views:views]];
    //yellowView 的竖直方向
    [containtView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[yellowView(blueView)]" options:0 metrics:nil views:views]];
    //grayView 的竖直方向
    [containtView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[grayView(blueView)]" options:0 metrics:nil views:views]];
}
 

最终实现的页面是这样的:
 
aaarticlea/png;base64,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Gq7k96lukHACBAicIjAjTfOZGHNA6ky3mWmMps+dguVqAgSeawRmFsSMaM9xQud1mYP85/S5s/f1WpZocb+WDXFfAgQIECBAgAABAgROF7imqTKnx7qFAAECBAgQIECAAIGkgOKe1JRFgAABAgQIECBAoCSguJdgxRIgQIAAAQIECBBICijuSU1ZBAgQIECAAAECBEoCinsJViwBAgQIECBAgACBpIDintSURYAAAQIECBAgQKAkoLiXYMUSIECAAAECBAgQSAoo7klNWQQIECBAgAABAgRKAop7CVYsAQIECBAgQIAAgaTAjcmwyXrOs5+SjpRHgAABAgQIECBA4LoTuOVt7hTdZiPuUU5hBAgQIECAAAECBDoCinvHVSoBAgQIECBAgACBqIDiHuUURoAAAQIECBAgQKAjoLh3XKUSIECAAAECBAgQiAoo7lFOYQQIECBAgAABAgQ6Aop7x1UqAQIECBAgQIAAgaiA4h7lFEaAAAECBAgQIECgI6C4d1ylEiBAgAABAgQIEIgKKO5RTmEECBAgQIAAAQIEOgKKe8dVKgECBAgQIECAAIGogOIe5RRGgAABAgQIECBAoCOguHdcpRIgQIAAAQIECBCICijuUU5hBAgQIECAAAECBDoCinvHVSoBAgQIECBAgACBqIDiHuUURoAAAQIECBAgQKAjoLh3XKUSIECAAAECBAgQiAoo7lFOYQQIECBAgAABAgQ6Aop7x1UqAQIECBAgQIAAgaiA4h7lFEaAAAECBAgQIECgI6C4d1ylEiBAgAABAgQIEIgKKO5RTmEECBAgQIAAAQIEOgKKe8dVKgECBAgQIECAAIGogOIe5RRGgAABAgQIECBAoCOguHdcpRIgQIAAAQIECBCICijuUU5hBAgQIECAAAECBDoCinvHVSoBAgQIECBAgACBqIDiHuUURoAAAQIECBAgQKAjoLh3XKUSIECAAAECBAgQiAoo7lFOYQQIECBAgAABAgQ6Aop7x1UqAQIECBAgQIAAgaiA4h7lFEaAAAECBAgQIECgI6C4d1ylEiBAgAABAgQIEIgKKO5RTmEECBAgQIAAAQIEOgKKe8dVKgECBAgQIECAAIGogOIe5RRGgAABAgQIECBAoCOguHdcpRIgQIAAAQIECBCICijuUU5hBAgQIECAAAECBDoCinvHVSoBAgQIECBAgACB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bl060VIJECBAgAABAgQIEEgJGHFPScohQIAAAQIECBAgUBRQ3Iu4ogkQIECAAAECBAikBBT3lKQcAgQIECBAgAABAkUBxb2IK5oAAQIECBAgQIBASkBxT0nKIUCAAAECBAgQIFAUUNyLuKIJECBAgAABAgQIpAQU95SkHAIECBAgQIAAAQJFAcW9iCuaAAECBAgQIECAQEpAcU9JyiFAgAABAgQIECBQFFDci7iiCRAgQIAAAQIECKQEFPeUpBwCBAgQIECAAAECRQHFvYgrmgABAgQIECBAgEBKQHFPScohQIAAAQIECBAgUBRQ3Iu4ogkQIECAAAECBAikBBT3lKQcAgQIECBAgAABAkUBxb2IK5oAAQIECBAgQIBASkBxT0nKIUCAAAECBAgQIFAUUNyLuKIJECBAgAABAgQIpAQU95SkHAIECBAgQIAAAQJFgRvT2bd/xdumI+URIECAAAECBAgQuO4Env7MZ0W32Yh7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgI3NiJPb+pT33SY8/vxtmyusAd73rP+mNcywM8+ZnPupa7u+91LHDnV7ztud76hz3+ied6+2xcV+Cme9y9+wDXmP7wR3ptv0bC6/buD77f+X5dT8MacU+LyiNAgAABAgQIECBQEFDcC6giCRAgQIAAAQIECKQFFPe0qDwCBAgQIECAAAECBQHFvYAqkgABAgQIECBAgEBaQHFPi8ojQIAAAQIECBAgUBBQ3AuoIgkQIECAAAECBAikBRT3tKg8AgQIECBAgAABAgUBxb2AKpIAAQIECBAgQIBAWkBxT4vKI0CAAAECBAgQIFAQUNwLqCIJECBAgAABAgQIpAUU97SoPAIECBAgQIAAAQIFAcW9gCqSAAECBAgQIECAQFpAcU+LyiNAgAABAgQIECBQEFDcC6giCRAgQIAAAQIECKQFFPe0qDwCBAgQIECAAAECBQHFvYAqkgABAgQIECBAgEBaQHFPi8ojQIAAAQIECBAgUBBQ3AuoIgkQIECAAAECBAikBRT3tKg8AgQIECBAgAABAgUBxb2AKpIAAQIECBAgQIBAWkBxT4vKI0CAAAECBAgQIFAQUNwLqCIJECBAgAABAgQIpAUU97SoPAIECBAgQIAAAQIFAcW9gCqSAAECBAgQIECAQFpAcU+LyiNAgAABAgQIECBQEFDcC6giCRAgQIAAAQIECKQFFPe0qDwCBAgQIECAAAECBQHFvYAqkgABAgQIECBAgEBaQHFPi8ojQIAAAQIECBAgUBBQ3AuoIgkQIECAAAECBAikBRT3tKg8AgQIECBAgAABAgUBxb2AKpIAAQIECBAgQIBAWkBxT4vKI0CAAAECBAgQIFAQUNwLqCIJECBAgAABAgQIpAUU97SoPAIECBAgQIAAAQIFAcW9gCqSAAECBAgQIECAQFpAcU+LyiNAgAABAgQIECBQEFDcC6giCRAgQIAAAQIECKQFFPe0qDwCBAgQIECAAAECBQHFvYAqkgABAgQIECBAgEBaQHFPi8ojQIAAAQIECBAgUBBQ3AuoIgkQIECAAAECBAikBRT3tKg8AgQIECBAgAABAgUBxb2AKpIAAQIECBAgQIBAWkBxT4vKI0CAAAECBAgQIFAQUNwLqCIJECBAgAABAgQIpAUU97SoPAIECBAgQIAAAQIFAcW9gCqSAAECBAgQIECAQFpAcU+LyiNAgAABAgQIECBQEFDcC6giCRAgQIAAAQIECKQFFPe0qDwCBAgQIECAAAECBQHFvYAqkgABAgQIECBAgEBaQHFPi8ojQIAAAQIECBAgUBBQ3AuoIgkQIECAAAECBAikBRT3tKg8AgQIECBAgAABAgUBxb2AKpIAAQIECBAgQIBAWkBxT4vKI0CAAAECBAgQIFAQUNwLqCIJECBAgAABAgQIpAUU97SoPAIECBAgQIAAAQIFgRt265LMvf0r3jYZJ4sAAQIECBAgQIDAdSnw9Gc+K7rdRtyjnMIIECBAgAABAgQIdAQU946rVAIECBAgQIAAAQJRAcU9yimMAAECBAgQIECAQEdAce+4SiVAgAABAgQIECAQFVDco5zCCBAgQIAAAQIECHQEFPeOq1QCBAgQIECAAAECUQHFPcopjAABAgQIECBAgEBHQHHvuEolQIAAAQIECBAgEBVQ3KOcwggQIECAAAECBAh0BBT3jqtUAgQIECBAgAABAlEBxT3KKYwAAQIECBAgQIBAR0Bx77hKJUCAAAECBAgQIBAVUNyjnMIIECBAgAABAgQIdAQU946rVAIECBAgQIAAAQJRAcU9yimMAAECBAgQIECAQEdAce+4SiVAgAABAgQIECAQFVDco5zCCBAgQIAAAQIECHQEFPeOq1QCBAgQIECAAAECUQHFPcopjAABAgQIECBAgEBHQHHvuEolQIAAAQIECBAgEBVQ3KOcwggQIECAAAECBAh0BBT3jqtUAgQIECBAgAABAlEBxT3KKYwAAQIECBAgQIBAR0Bx77hKJUCAAAECBAgQIBAVUNyjnMIIECBAgAABAgQIdAQU946rVAIECBAgQIAAAQJRAcU9yimMAAECBAgQIECAQEdAce+4SiVAgAABAgQIECAQFVDco5zCCBAgQIAAAQIECHQEFPeOq1QCBAgQIECAAAECUQHFPcopjAABAgQIECBAgEBHQHHvuEolQIAAAQIECBAgEBVQ3KOcwggQIECAAAECBAh0BBT3jqtUAgQIECBAgAABAlEBxT3KKYwAAQIECBAgQIBAR0Bx77hKJUCAAAECBAgQIBAVUNyjnMIIECBAgAABAgQIdAQU946rVAIECBAgQIAAAQJRAcU9yimMAAECBAgQIECAQEdAce+4SiVAgAABAgQIECAQFVDco5zCCBAgQIAAAQIECHQEFPeOq1QCBAgQIECAAAECUQHFPcopjAABAgQIECBAgEBHQHHvuEolQIAAAQIECBAgEBVQ3KOcwggQIECAAAECBAh0BBT3jqtUAgQIECBAgAABAlEBxT3KKYwAAQIECBAgQIBAR0Bx77hKJUCAAAECBAgQIBAVUNyjnMIIECBAgAABAgQIdAQU946rVAIECBAgQIAAAQJRAcU9yimMAAECBAgQIECAQEdAce+4SiVAgAABAgQIECAQFVDco5zCCBAgQIAAAQIECHQEFPeOq1QCBAgQIECAAAECUQHFPcopjAABAgQIECBAgEBHQHHvuEolQIAAAQIECBAgEBVQ3KOcwggQIECAAAECBAh0BBT3jqtUAgQIECBAgAABAlEBxT3KKYwAAQIECBAgQIBAR0Bx77hKJUCAAAECBAgQIBAVUNyjnMIIECBAgAABAgQIdAQU946rVAIECBAgQIAAAQJRAcU9yimMAAECBAgQIECAQEdAce+4SiVAgAABAgQIECAQFVDco5zCCBAgQIAAAQIECHQEFPeOq1QCBAgQIECAAAECUQHFPcopjAABAgQIECBAgEBHQHHvuEolQIAAAQIECBAgEBVQ3KOcwggQIECAAAECBAh0BBT3jqtUAgQIECBAgAABAlEBxT3KKYwAAQIECBAgQIBAR0Bx77hKJUCAAAECBAgQIBAVUNyjnMIIECBAgAABAgQIdAQU946rVAIECBAgQIAAAQJRAcU9yimMAAECBAgQIECAQEdAce+4SiVAgAABAgQIECAQFVDco5zCCBAgQIAAAQIECHQEFPeOq1QCBAgQIECAAAECUQHFPcopjAABAgQIECBAgEBHQHHvuEolQIAAAQIECBAgEBVQ3KOcwggQIECAAAECBAh0BBT3jqtUAgQIECBAgAABAlEBxT3KKYwAAQIECBAgQIBAR0Bx77hKJUCAAAECBAgQIBAVUNyjnMIIECBAgAABAgQIdAQU946rVAIECBAgQIAAAQJRAcU9yimMAAECBAgQIECAQEdAce+4SiVAgAABAgQIECAQFVDco5zCCBAgQIAAAQIECHQEFPeOq1QCBAgQIECAAAECUQHFPcopjAABAgQIECBAgEBHQHHvuEolQIAAAQIECBAgEBVQ3KOcwggQIECAAAECBAh0BBT3jqtUAgQIECBAgAABAlEBxT3KKYwAAQIECBAgQIBAR0Bx77hKJUCAAAECBAgQIBAVUNyjnMIIECBAgAABAgQIdAQU946rVAIECBAgQIAAAQJRAcU9yimMAAECBAgQIECAQEdAce+4SiVAgAABAgQIECAQFVDco5zCCBAgQIAAAQIECHQEFPeOq1QCBAgQIECAAAECUQHFPcopjAABAgQIECBAgEBHQHHvuEolQIAAAQIECBAgEBVQ3KOcwggQIECAAAECBAh0BBT3jqtUAgQIECBAgAABAlEBxT3KKYwAAQIECBAgQIBAR0Bx77hKJUCAAAECBAgQIBAVUNyjnMIIECBAgAABAgQIdAQU946rVAIECBAgQIAAAQJRAcU9yimMAAECBAgQIECAQEdAce+4SiVAgAABAgQIECAQFVDco5zCCBAgQIAAAQIECHQEFPeOq1QCBAgQIECAAAECUQHFPcopjAABAgQIECBAgEBHQHHvuEolQIAAAQIECBAgEBVQ3KOcwggQIECAAAECBAh0BBT3jqtUAgQIECBAgAABAlEBxT3KKYwAAQIECBAgQIBAR0Bx77hKJUCAAAECBAgQIBAVUNyjnMIIECBAgAABAgQIdAQU946rVAIECBAgQIAAAQJRAcU9yimMAAECBAgQIECAQEdAce+4SiVAgAABAgQIECAQFVDco5zCCBAgQIAAAQIECHQEFPeOq1QCBAgQIECAAAECUQHFPcopjAABAgQIECBAgEBHQHHvuEolQIAAAQIECBAgEBVQ3KOcwggQIECAAAECBAh0BBT3jqtUAgQIECBAgAABAlEBxT3KKYwAAQIECBAgQIBAR0Bx77hKJUCAAAECBAgQIBAVUNyjnMIIECBAgAABAgQIdAQU946rVAIECBAgQIAAAQJRAcU9yimMAAECBAgQIECAQEdAce+4SiVAgAABAgQIECAQFVDco5zCCBAgQIAAAQIECHQEFPeOq1QCBAgQIECAAAECUQHFPcopjAABAgQIECBAgEBHQHHvuEolQIAAAQIECBAgEBVQ3KOcwggQIECAAAECBAh0BBT3jqtUAgQIECBAgAABAlEBxT3KKYwAAQIECBAgQIBAR0Bx77hKJUCAAAECBAgQIBAVUNyjnMIIECBAgAABAgQIdAQU946rVAIECBAgQIAAAQJRAcU9yimMAAECBAgQIECAQEdAce+4SiVAgAABAgQIECAQFVDco5zCCBAgQIAAAQIECHQEFPeOq1QCBAgQIECAAAECUQHFPcopjAABAgQIECBAgEBHQHHvuEolQIAAAQIECBAgEBVQ3KOcwggQIECAAAECBAh0BBT3jqtUAgQIECBAgAABAlEBxT3KKYwAAQIECBAgQIBAR0Bx77hKJUCAAAECBAgQIBAVUNyjnMIIECBAgAABAgQIdAQU946rVAIECBAgQIAAAQJRAcU9yimMAAECBAgQIECAQEdAce+4SiVAgAABAgQIECAQFVDco5zCCBAgQIAAAQIECHQEFPeOq1QCBAgQIECAAAECUQHFPcopjAABAgQIECBAgEBHQHHvuEolQIAAAQIECBAgEBVQ3KOcwggQIECAAAECBAh0BBT3jqtUAgQIECBAgAABAlEBxT3KKYwAAQIECBAgQIBAR0Bx77hKJUCAAAECBAgQIBAVUNyjnMIIECBAgAABAgQIdAQU946rVAIECBAgQIAAAQJRAcU9yimMAAECBAgQIECAQEdAce+4SiVAgAABAgQIECAQFVDco5zCCBAgQIAAAQIECHQEFPeOq1QCBAgQIECAAAECUQHFPcopjAABAgQIECBAgEBHQHHvuEolQIAAAQIECBAgEBVQ3KOcwggQIECAAAECBAh0BBT3jqtUAgQIECBAgAABAlEBxT3KKYwAAQIECBAgQIBAR0Bx77hKJUCAAAECBAgQIBAVUNyjnMIIECBAgAABAgQIdAQU946rVAIECBAgQIAAAQJRAcU9yimMAAECBAgQIECAQEdAce+4SiVAgAABAgQIECAQFVDco5zCCBAgQIAAAQIECHQEFPeOq1QCBAgQIECAAAECUQHFPcopjAABAgQIECBAgEBHQHHvuEolQIAAAQIECBAgEBVQ3KOcwggQIECAAAECBAh0BBT3jqtUAgQIECBAgAABAlEBxT3KKYwAAQIECBAgQIBAR0Bx77hKJUCAAAECBAgQIBAVUNyjnMIIECBAgAABAgQIdAQU946rVAIECBAgQIAAAQJRAcU9yimMAAECBAgQIECAQEdAce+4SiVAgAABAgQIECAQFVDco5zCCBAgQIAAAQIECHQEFPeOq1QCBAgQIECAAAECUQHFPcopjAABAgQIECBAgEBH4IbdunSipRIgQIAAAQIECBAgkBIw4p6SlEOAAAECBAgQIECgKKC4F3FFEyBAgAABAgQIEEgJKO4pSTkECBAgQIAAAQIEigKKexFXNAECBAgQIECAAIGUgOKekpRDgAABAgQIECBAoCiguBdxRRMgQIAAAQIECBBICSjuKUk5BAgQIECAAAECBIoCinsRVzQBAgQIECBAgACBlIDinpKUQ4AAAQIECBAgQKAooLgXcUUTIECAAAECBAgQSAko7ilJOQQIECBAgAABAgSKAop7EVc0AQIECBAgQIAAgZSA4p6SlEOAAAECBAgQIECgKKC4F3FFEyBAgAABAgQIEEgJKO4pSTkECBAgQIAAAQIEigKKexFXNAECBAgQIECAAIGUgOKekpRDgAABAgQIECBAoCiguBdxRRMgQIAAAQIECBBICSjuKUk5BAgQIECAAAECBIoCN6azH/34p6Qj5REgQIAAAQIECBC47gTuc487RbfZiHuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAGAAuANAAAqYElEQVQCBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgIKO4dV6kECBAgQIAAAQIEogKKe5RTGAECBAgQIECAAIGOgOLecZVKgAABAgQIECBAICqguEc5hREgQIAAAQIECBDoCCjuHVepBAgQIECAAAECBKICinuUUxgBAgQIECBAgACBjoDi3nGVSoAAAQIECBAgQCAqoLhHOYURIECAAAECBAgQ6Ago7h1XqQQIECBAgAABAgSiAop7lFMYAQIECBAgQIAAgY6A4t5xlUqAAAECBAgQIEAgKqC4RzmFESBAgAABAgQIEOgI3LBbl060VAIECBAgQIAAAQIEUgJG3FOScggQIECAAAECBAgUBRT3Iq5oAgQIECBAgAABAikBxT0lKYcAAQIECBAgQIBAUUBxL+KKJkCAAAECBAgQIJASUNxTknIIECBAgAABAgQIFAUU9yKuaAIECBAgQIAAAQIpAcU9JSmHAAECBAgQIECAQFFAcS/iiiZAgAABAgQIECCQElDcU5JyCBAgQIAAAQIECBQFFPcirmgCBAgQIECAAAECKQHFPSUphwABAgQIECBAgEBRQHEv4oomQIAAAQIECBAgkBJQ3FOScggQIECAAAECBAgUBRT3Iq5oAgQIECBAgAABAikBxT0lKYcAAQIECBAgQIBAUUBxL+KKJkCAAAECBAgQIJASUNxTknIIECBAgAABAgQIFAUU9yKuaAIECBAgQIAAAQIpAcU9JSmHAAECBAgQIECAQFHgxnT2o572jHSkPAIECBAgQIAAAQLXncB973C76DYbcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQIECBAgEBUQHGPcgojQIAAAQIECBAg0BFQ3DuuUgkQIECAAAECBAhEBRT3KKcwAgQIECBAgAABAh0Bxb3jKpUAAQIECBAgQIBAVEBxj3IKI0CAAAECBAgQINARUNw7rlIJECBAgAABAgQIRAUU9yinMAIECBAgQIAAAQIdAcW94yqVAAECBAgQIECAQFRAcY9yCiNAgAABAgQIECDQEVDcO65SCRAgQIAAAQIECEQFFPcopzACBAgQIECAAAECHQHFveMqlQABAgQI/L927NgGABiGYRj6/9Ftj5A35gANnIwQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Aob7xlWVAAECBAgQIECAQCpguKecYgQIECBAgAABAgQ2Auf+26RVCRAgQIAAAQIECBCoBHzcK0kdAgQIECBAgAABAkMBw32IK02AAAECBAgQIECgEjDcK0kdAgQIECBAgAABAkMBw32IK02AAAECBAgQIECgEjDcK0kdAgQIECBAgAABAkMBw32IK02AAAECBAgQIECgEjDcK0kdAgQIECBAgAABAkMBw32IK02AAAECBAgQIECgEjDcK0kdAgQIECBAgAABAkMBw32IK02AAAECBAgQIECgEjDcK0kdAgQIECBAgAABAkMBw32IK02AAAECBAgQIECgEjDcK0kdAgQIECBAgAABAkMBw32IK02AAAECBAgQIECgEjDcK0kdAgQIECBAgAABAkMBw32IK02AAAECBAgQIECgEjDcK0kdAgQIECBAgAABAkMBw32IK02AAAECBAgQIECgEjDcK0kdAgQIECBAgAABAkOBB+12XALusHX1AAAAAElFTkSuQmCC" alt="" name="en-media:image/png:a05263b83eea60ebccfd8344d94c18d6:none:none" width="174" />
 

注意:
使用VFL布局时一定要添加下面这行代码:
[blueView setTranslatesAutoresizingMaskIntoConstraints:NO];
 
 
这是官方对这个方法的注解,我的理解是:
 
这个参数默认时为yes,autoresizing会自动为你生成一组决定view位置的约束(也就是说默认情况下你添加layout约束是无效的),此时使用的不是Autolayout布局约束而是autoresizing
 

 Autoresizing:
 已经是比较过时的设置适配方法了,而且有很大的缺陷,只能设置父子控件之间的约束,不能设置兄弟控件之间的约束。所以在这里我们最好不要再开发中应用。
 AutoLayout:
 最流行的适配方式,苹果积极推荐,非常强大好用的适配方法。对提升开发中的效率有很大的帮助。
 
 autolayout 和Autoresizing 是会相互冲突的
 
 

VFL使用的更多相关文章

  1. 【原】iOS学习之苹果原生代码实现Autolayout和VFL语言

    1.添加约束的规则 在创建约束之后,需要将其添加到作用的view上 在添加时要注意目标view需要遵循以下规则: 1)对于 两个同层级view之间 的约束关系,添加到它们的父view上 2)对于 两个 ...

  2. AutoLayout - VFL

    其实很早就像整理出一份VFL的总结出来,觉得有很多东西可以写,但是真正去总结的时候发现,VFL也并没有很多东西,其实应该是在布局的过程中直接用VFL语句思考的过程比较难以形成,多数布局问题其实是在实际 ...

  3. Autolayout(VFL)

    Autolayout(VFL) 1.NSLayoutConstraint + (NSArray *)constraintsWithVisualFormat:(NSString *)format opt ...

  4. IOS开发之自动布局--VFL语言

    前言:VFL是苹果公司为了简化Autolayout的编码而推出的抽象语言.对于纯代码发烧友,值得我们去学习和了解哦. 1.什么是VFL语言 VFL全称是Visual Format Language,翻 ...

  5. IOS VFL屏幕自适应

    -(void)fun1{ //注意使用VFL,不用设置视图的frame UIView *view = [[UIView alloc] init]; view.backgroundColor = [UI ...

  6. iOS,自动布局autoresizing和auto layout,VFL语言

    1.使用autoresizing 2.使用autolayout 3.VFL语言(Visual Format Language:可视化格式语言) 使用autoresizing 点击xib文件,去掉使用a ...

  7. 使用Auto Layout中的VFL(Visual format language)--代码实现自动布局【转】

    本文将通过简单的UI来说明如何用VFL来实现自动布局.在自动布局的时候避免不了使用代码来加以优化以及根据内容来实现不同的UI. 一:API介绍 NSLayoutConstraint API 1 2 3 ...

  8. 转载自@机智的新手:使用Auto Layout中的VFL(Visual format language)--代码实现自动布局

    本文将通过简单的UI来说明如何用VFL来实现自动布局.在自动布局的时候避免不了使用代码来加以优化以及根据内容来实现不同的UI. 一:API介绍 NSLayoutConstraint API 1 2 3 ...

  9. Autolayout及VFL经验分享

    http://www.cocoachina.com/industry/20131108/7322.html 这篇不是什么教程.Cocoa autolayout出来蛮久了.以前多次想去深入研究一下,每次 ...

  10. iOS开发-VFL(Visual format language)和Autolayout

    AutoLayout不管是在StoryBorad还是在xib中都相对来说比较简单,VFL(Visual  fromat  language)可视化语言基本上用到的比较少,在xCode4时候自动布局的概 ...

随机推荐

  1. 从DevOps到Cloud Native,应用上云姿势全解锁

    本文由  网易云发布. 作者:林帆 序文 伴随着IaaS.PaaS等云端基础设施技术的成熟,“应用上云”成为许多企业软件部门的心头大事.通过把传统软件系统搬到云上,一方面可以让业务方获得更多的资源灵活 ...

  2. SqlAlchemy操作(一)

    博客转载于 http://www.cnblogs.com/haiyan123/p/8270520.html 一. 介绍 SQLAlchemy是一个基于Python实现的ORM框架.该框架建立在 DB ...

  3. C++派生类与基类对象赋值情况

    一 .普通赋值 (同名隐藏) 子类对象调用和父类相同的函数名,该父类的函数名会被隐藏,只会调用子类的函数. Class A { public: void show(); void show(int); ...

  4. xiaocong/uiautomator

    uiautomator      This module is a Python wrapper of Android uiautomator testing framework. It works ...

  5. Python 将一个时间戳格式化为(格林威治时间或者本地时区时间)

    时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数. 获取一个时间戳 import time times = time. ...

  6. Nexus3.6 window版私服搭建 安装、配置教程

    1.本地环境配置(Nexus3.6支持jdk版本1.6.1.7.1.8) 1.1.官网下载地址:https://www.sonatype.com/download-oss-sonatype       ...

  7. D06——C语言基础学PYTHON

    C语言基础学习PYTHON——基础学习D06 20180821内容纲要: 面向对象初级学习 1 面向对象 2 类 (1)封装 (2)继承 (3)多态 3 小结 4 练习:选课系统 5 课外拓展:答题系 ...

  8. layer弹出层设置相对父级元素定位

    layer弹出层默认是相对body固定定位的,可是项目中一般需要相对某个盒子相对定位,下面是个加载弹层例子: var loadIndex = layer.open({ type: 3, //3 表示加 ...

  9. OS之进程管理 --- 死锁

    什么是死锁 在正常操作模式下,进程按如下顺序来使用资源: 申请:进程请求资源 使用:进程对资源进行操作 释放:进程释放资源 当一组进程中的每一个进程度在等待一个事件,而这事件只能有一组进程的另一个进程 ...

  10. Visual Studio和eclipse的大小写转换快捷键

    Visual Studio: 转小写:ctrl + u 转大写:  ctrl + shift + u eclipse: 转小写:  ctrl + shift + y 转大写:  ctrl + shif ...