CoreData(数据持久化的方式)

//

//  ViewController.m

//  UI-AutoLayout.

//

//  Created by Bruce on 15/9/7.

//  Copyright (c) 2015年 Bruce. All rights reserved.

//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

[self demo5];

}

//一个视图

- (void)demo1

{

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

//    如果需要使用autoLayout   translatesAutoresizingMaskIntoConstraints 必须禁用

view.translatesAutoresizingMaskIntoConstraints = NO;

view.backgroundColor = [UIColor redColor];

[self.view addSubview:view];

//    VFL  横向 竖向布局

//    @"H:" 设置横向布局

//    @"V:" 设置竖向布局

//    设置横向布局 距离参照视图的左侧边距

//    @"H:|-20-"

//    @"H:[view]-20-"

//    @"H:|-20-[view(200)]" view的宽  永远是200

//    @"H:|-20-[view(otherView)]" view的宽  与otherView的宽相同

//    @"H:|-20-[view(>=200)]" 设置横向布局 距离参照视图的左侧边距 设置view横向的尺寸 不能低于200

//    @"H:|-20-[view(>=200)]-20-|" 设置横向布局 距离参照视图的左侧边距 设置view横向的尺寸 不能低于200 设置右侧与参照视图之间的间距

//    视图 使用属性的时候   绑定key  需要绑定它真实的名字  _titleLable

//    self.titleLable = _titleLable

//    @"H:|-20-" 设置横向布局 距离父视图的左侧边距

//    @"H:|-20-[view(>=200)]" 设置横向布局 距离父视图的左侧边距 设置view横向的尺寸 不能低于200

//    @"H:|-20-[view(>=200)]-20-|" 设置横向布局 距离父视图的左侧边距 设置view横向的尺寸 不能低于200 设置右侧与父视图之间的间距

//    竖向布局@"V:|-40-[view(>=200)]-20-|"

//    使用VFL  需把视图的对象(视图) 与 他的名字(字符串) 绑定起来

NSDictionary *views = NSDictionaryOfVariableBindings(view);

//    给 self.view 和 view 添加约束

//    addConstraints 添加约束

//    NSLayoutConstraint 添加 具体约束的一个类

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

//    format:VFL

//    opts:同意按照某个方向去布局

//    metrics:绑定的参数

//    views:绑定视图的参数

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[view(>=200)]-20-|" options:0 metrics:nil views:views]];

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-40-[view(>=200)]-20-|" options:0 metrics:nil views:views]];

}

//两个视图的布局

- (void)demo2

{

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

//    如果需要使用autoLayout   translatesAutoresizingMaskIntoConstraints 必须禁用

view.translatesAutoresizingMaskIntoConstraints = NO;

view.backgroundColor = [UIColor redColor];

[self.view addSubview:view];

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

//    如果需要使用autoLayout   translatesAutoresizingMaskIntoConstraints 必须禁用

view1.translatesAutoresizingMaskIntoConstraints = NO;

view1.backgroundColor = [UIColor yellowColor];

[self.view addSubview:view1];

NSDictionary *views = NSDictionaryOfVariableBindings(view,view1);

//    红色view的约束

//    @"H:|-20-[view(>=200)]-20-|"

//    @"V:|-40-[view(50)]-10-[view1]"

//    黄色view1约束

//    @"H:|-20-[view1(>=200)]-20-|"

//    @"V:[view]-10-[view1(50)]"

//    红色view横向的约束

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[view(>=200)]-20-|" options:0 metrics:nil views:views]];

//    红色view竖向的约束

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-40-[view(50)]-10-[view1]" options:0 metrics:nil views:views]];

//    黄色view1横向的约束

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[view1(>=200)]-20-|" options:0 metrics:nil views:views]];

//    黄色view1竖向的约束

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[view]-10-[view1(50)]" options:0 metrics:nil views:views]];

}

//两个视图的布局 优化demo2

- (void)demo3

{

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

//    如果需要使用autoLayout   translatesAutoresizingMaskIntoConstraints 必须禁用

view.translatesAutoresizingMaskIntoConstraints = NO;

view.backgroundColor = [UIColor redColor];

[self.view addSubview:view];

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

//    如果需要使用autoLayout   translatesAutoresizingMaskIntoConstraints 必须禁用

view1.translatesAutoresizingMaskIntoConstraints = NO;

view1.backgroundColor = [UIColor yellowColor];

[self.view addSubview:view1];

NSDictionary *views = NSDictionaryOfVariableBindings(view,view1);

//    红色view的约束

//    @"H:|-20-[view(>=200)]-20-|"

//    @"V:|-40-[view(50)]-10-[view1]"

//    黄色view1约束

//    @"H:|-20-[view1(>=200)]-20-|"

//    @"V:[view]-10-[view1(50)]"

//    红色view横向的约束

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[view(>=200)]-20-|" options:0 metrics:nil views:views]];

//    红色view 黄色view1 都在同一个父视图 而且两个视图之间 又有关系

//    红色view 黄色view1 竖向的约束

//    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-40-[view(50)]-10-[view1(50)]" options:0 metrics:nil views:views]];

//    红色view 黄色view1 两个视图的高度 都是50

//    [view1(view)]

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-40-[view(50)]-10-[view1(view)]" options:0 metrics:nil views:views]];

//    黄色view1横向的约束

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[view1(>=200)]-20-|" options:0 metrics:nil views:views]];

//    黄色view1竖向的约束

//    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[view]-10-[view1(50)]" options:0 metrics:nil views:views]];

}

//再次优化 demo2

- (void)demo4

{

NSArray *colorList = @[[UIColor redColor],[UIColor yellowColor]];

for (int i=0; i<2; i++) {

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

view.backgroundColor = colorList[i];

view.translatesAutoresizingMaskIntoConstraints = NO;

view.tag = 10+i;

[self.view addSubview:view];

}

UIView *redView = [self.view viewWithTag:10];

UIView *yellowView = [self.view viewWithTag:11];

NSDictionary *views = NSDictionaryOfVariableBindings(redView,yellowView);

//    两个视图 横向的约束

NSArray *constraints = @[@"H:|-20-[redView(>=200)]-20-|",@"H:|-20-[yellowView(>=200)]-20-|"];

for (NSString *VFL in constraints) {

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:VFL options:0 metrics:nil views:views]];

}

//    两个视图的竖向约束

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-40-[redView(50)]-10-[yellowView(redView)]" options:0 metrics:nil views:views]];

}

//三个视图

- (void)demo5

{

NSArray *colorList = @[[UIColor redColor],[UIColor yellowColor],[UIColor blueColor]];

for (int i=0; i<3; i++) {

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

view.translatesAutoresizingMaskIntoConstraints = NO;

view.backgroundColor = colorList[i];

view.tag = 10+i;

[self.view addSubview:view];

}

UIView *redView = [self.view viewWithTag:10];

UIView *yellowView = [self.view viewWithTag:11];

UIView *blueView = [self.view viewWithTag:12];

NSDictionary *views = NSDictionaryOfVariableBindings(redView,yellowView,blueView);

//    @"H:|-20-[redView>=200]-20-|"

//    @"H:|-20-[yellowView>=100]-10-[blueView(yellowView)]-20-|"

NSArray *HList = @[@"H:|-20-[redView(>=200)]-20-|",@"H:|-20-[yellowView(>=100)]-10-[blueView(yellowView)]-20-|"];

//    红色视图与黄色视图竖向的关系,红色视图与蓝色视图竖向的关系

NSArray *VList = @[@"V:|-40-[redView(50)]-10-[yellowView(redView)]",@"V:[redView]-10-[blueView(redView)]"];

for (int i=0; i<VList.count; i++) {

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:HList[i] options:0 metrics:nil views:views]];

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:VList[i] options:0 metrics:nil views:views]];

}

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

@end

-------------------------------------

//

//  ViewController.m

//  UI-AutoLayout.

//

//  Created by Bruce on 15/9/7.

//  Copyright (c) 2015年 Bruce. All rights reserved.

//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

[self demo5];

}

//一个视图

- (void)demo1

{

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

//    如果需要使用autoLayout   translatesAutoresizingMaskIntoConstraints 必须禁用

view.translatesAutoresizingMaskIntoConstraints = NO;

view.backgroundColor = [UIColor redColor];

[self.view addSubview:view];

//    VFL  横向 竖向布局

//    @"H:" 设置横向布局

//    @"V:" 设置竖向布局

//    设置横向布局 距离参照视图的左侧边距

//    @"H:|-20-"

//    @"H:[view]-20-"

//    @"H:|-20-[view(200)]" view的宽  永远是200

//    @"H:|-20-[view(otherView)]" view的宽  与otherView的宽相同

//    @"H:|-20-[view(>=200)]" 设置横向布局 距离参照视图的左侧边距 设置view横向的尺寸 不能低于200

//    @"H:|-20-[view(>=200)]-20-|" 设置横向布局 距离参照视图的左侧边距 设置view横向的尺寸 不能低于200 设置右侧与参照视图之间的间距

//    视图 使用属性的时候   绑定key  需要绑定它真实的名字  _titleLable

//    self.titleLable = _titleLable

//    @"H:|-20-" 设置横向布局 距离父视图的左侧边距

//    @"H:|-20-[view(>=200)]" 设置横向布局 距离父视图的左侧边距 设置view横向的尺寸 不能低于200

//    @"H:|-20-[view(>=200)]-20-|" 设置横向布局 距离父视图的左侧边距 设置view横向的尺寸 不能低于200 设置右侧与父视图之间的间距

//    竖向布局@"V:|-40-[view(>=200)]-20-|"

//    使用VFL  需把视图的对象(视图) 与 他的名字(字符串) 绑定起来

NSDictionary *views = NSDictionaryOfVariableBindings(view);

//    给 self.view 和 view 添加约束

//    addConstraints 添加约束

//    NSLayoutConstraint 添加 具体约束的一个类

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

//    format:VFL

//    opts:同意按照某个方向去布局

//    metrics:绑定的参数

//    views:绑定视图的参数

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[view(>=200)]-20-|" options:0 metrics:nil views:views]];

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-40-[view(>=200)]-20-|" options:0 metrics:nil views:views]];

}

//两个视图的布局

- (void)demo2

{

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

//    如果需要使用autoLayout   translatesAutoresizingMaskIntoConstraints 必须禁用

view.translatesAutoresizingMaskIntoConstraints = NO;

view.backgroundColor = [UIColor redColor];

[self.view addSubview:view];

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

//    如果需要使用autoLayout   translatesAutoresizingMaskIntoConstraints 必须禁用

view1.translatesAutoresizingMaskIntoConstraints = NO;

view1.backgroundColor = [UIColor yellowColor];

[self.view addSubview:view1];

NSDictionary *views = NSDictionaryOfVariableBindings(view,view1);

//    红色view的约束

//    @"H:|-20-[view(>=200)]-20-|"

//    @"V:|-40-[view(50)]-10-[view1]"

//    黄色view1约束

//    @"H:|-20-[view1(>=200)]-20-|"

//    @"V:[view]-10-[view1(50)]"

//    红色view横向的约束

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[view(>=200)]-20-|" options:0 metrics:nil views:views]];

//    红色view竖向的约束

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-40-[view(50)]-10-[view1]" options:0 metrics:nil views:views]];

//    黄色view1横向的约束

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[view1(>=200)]-20-|" options:0 metrics:nil views:views]];

//    黄色view1竖向的约束

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[view]-10-[view1(50)]" options:0 metrics:nil views:views]];

}

//两个视图的布局 优化demo2

- (void)demo3

{

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

//    如果需要使用autoLayout   translatesAutoresizingMaskIntoConstraints 必须禁用

view.translatesAutoresizingMaskIntoConstraints = NO;

view.backgroundColor = [UIColor redColor];

[self.view addSubview:view];

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

//    如果需要使用autoLayout   translatesAutoresizingMaskIntoConstraints 必须禁用

view1.translatesAutoresizingMaskIntoConstraints = NO;

view1.backgroundColor = [UIColor yellowColor];

[self.view addSubview:view1];

NSDictionary *views = NSDictionaryOfVariableBindings(view,view1);

//    红色view的约束

//    @"H:|-20-[view(>=200)]-20-|"

//    @"V:|-40-[view(50)]-10-[view1]"

//    黄色view1约束

//    @"H:|-20-[view1(>=200)]-20-|"

//    @"V:[view]-10-[view1(50)]"

//    红色view横向的约束

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[view(>=200)]-20-|" options:0 metrics:nil views:views]];

//    红色view 黄色view1 都在同一个父视图 而且两个视图之间 又有关系

//    红色view 黄色view1 竖向的约束

//    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-40-[view(50)]-10-[view1(50)]" options:0 metrics:nil views:views]];

//    红色view 黄色view1 两个视图的高度 都是50

//    [view1(view)]

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-40-[view(50)]-10-[view1(view)]" options:0 metrics:nil views:views]];

//    黄色view1横向的约束

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[view1(>=200)]-20-|" options:0 metrics:nil views:views]];

//    黄色view1竖向的约束

//    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[view]-10-[view1(50)]" options:0 metrics:nil views:views]];

}

//再次优化 demo2

- (void)demo4

{

NSArray *colorList = @[[UIColor redColor],[UIColor yellowColor]];

for (int i=0; i<2; i++) {

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

view.backgroundColor = colorList[i];

view.translatesAutoresizingMaskIntoConstraints = NO;

view.tag = 10+i;

[self.view addSubview:view];

}

UIView *redView = [self.view viewWithTag:10];

UIView *yellowView = [self.view viewWithTag:11];

NSDictionary *views = NSDictionaryOfVariableBindings(redView,yellowView);

//    两个视图 横向的约束

NSArray *constraints = @[@"H:|-20-[redView(>=200)]-20-|",@"H:|-20-[yellowView(>=200)]-20-|"];

for (NSString *VFL in constraints) {

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:VFL options:0 metrics:nil views:views]];

}

//    两个视图的竖向约束

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-40-[redView(50)]-10-[yellowView(redView)]" options:0 metrics:nil views:views]];

}

//三个视图

- (void)demo5

{

NSArray *colorList = @[[UIColor redColor],[UIColor yellowColor],[UIColor blueColor]];

for (int i=0; i<3; i++) {

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

view.translatesAutoresizingMaskIntoConstraints = NO;

view.backgroundColor = colorList[i];

view.tag = 10+i;

[self.view addSubview:view];

}

UIView *redView = [self.view viewWithTag:10];

UIView *yellowView = [self.view viewWithTag:11];

UIView *blueView = [self.view viewWithTag:12];

NSDictionary *views = NSDictionaryOfVariableBindings(redView,yellowView,blueView);

//    @"H:|-20-[redView>=200]-20-|"

//    @"H:|-20-[yellowView>=100]-10-[blueView(yellowView)]-20-|"

NSArray *HList = @[@"H:|-20-[redView(>=200)]-20-|",@"H:|-20-[yellowView(>=100)]-10-[blueView(yellowView)]-20-|"];

//    红色视图与黄色视图竖向的关系,红色视图与蓝色视图竖向的关系

NSArray *VList = @[@"V:|-40-[redView(50)]-10-[yellowView(redView)]",@"V:[redView]-10-[blueView(redView)]"];

for (int i=0; i<VList.count; i++) {

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:HList[i] options:0 metrics:nil views:views]];

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:VList[i] options:0 metrics:nil views:views]];

}

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

@end

------------------------

//

//  ViewController.m

//  UI-AutoLayout.

//

//  Created by Bruce on 15/9/7.

//  Copyright (c) 2015年 Bruce. All rights reserved.

//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

[self demo5];

}

//一个视图

- (void)demo1

{

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

//    如果需要使用autoLayout   translatesAutoresizingMaskIntoConstraints 必须禁用

view.translatesAutoresizingMaskIntoConstraints = NO;

view.backgroundColor = [UIColor redColor];

[self.view addSubview:view];

//    VFL  横向 竖向布局

//    @"H:" 设置横向布局

//    @"V:" 设置竖向布局

//    设置横向布局 距离参照视图的左侧边距

//    @"H:|-20-"

//    @"H:[view]-20-"

//    @"H:|-20-[view(200)]" view的宽  永远是200

//    @"H:|-20-[view(otherView)]" view的宽  与otherView的宽相同

//    @"H:|-20-[view(>=200)]" 设置横向布局 距离参照视图的左侧边距 设置view横向的尺寸 不能低于200

//    @"H:|-20-[view(>=200)]-20-|" 设置横向布局 距离参照视图的左侧边距 设置view横向的尺寸 不能低于200 设置右侧与参照视图之间的间距

//    视图 使用属性的时候   绑定key  需要绑定它真实的名字  _titleLable

//    self.titleLable = _titleLable

//    @"H:|-20-" 设置横向布局 距离父视图的左侧边距

//    @"H:|-20-[view(>=200)]" 设置横向布局 距离父视图的左侧边距 设置view横向的尺寸 不能低于200

//    @"H:|-20-[view(>=200)]-20-|" 设置横向布局 距离父视图的左侧边距 设置view横向的尺寸 不能低于200 设置右侧与父视图之间的间距

//    竖向布局@"V:|-40-[view(>=200)]-20-|"

//    使用VFL  需把视图的对象(视图) 与 他的名字(字符串) 绑定起来

NSDictionary *views = NSDictionaryOfVariableBindings(view);

//    给 self.view 和 view 添加约束

//    addConstraints 添加约束

//    NSLayoutConstraint 添加 具体约束的一个类

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

//    format:VFL

//    opts:同意按照某个方向去布局

//    metrics:绑定的参数

//    views:绑定视图的参数

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[view(>=200)]-20-|" options:0 metrics:nil views:views]];

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-40-[view(>=200)]-20-|" options:0 metrics:nil views:views]];

}

//两个视图的布局

- (void)demo2

{

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

//    如果需要使用autoLayout   translatesAutoresizingMaskIntoConstraints 必须禁用

view.translatesAutoresizingMaskIntoConstraints = NO;

view.backgroundColor = [UIColor redColor];

[self.view addSubview:view];

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

//    如果需要使用autoLayout   translatesAutoresizingMaskIntoConstraints 必须禁用

view1.translatesAutoresizingMaskIntoConstraints = NO;

view1.backgroundColor = [UIColor yellowColor];

[self.view addSubview:view1];

NSDictionary *views = NSDictionaryOfVariableBindings(view,view1);

//    红色view的约束

//    @"H:|-20-[view(>=200)]-20-|"

//    @"V:|-40-[view(50)]-10-[view1]"

//    黄色view1约束

//    @"H:|-20-[view1(>=200)]-20-|"

//    @"V:[view]-10-[view1(50)]"

//    红色view横向的约束

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[view(>=200)]-20-|" options:0 metrics:nil views:views]];

//    红色view竖向的约束

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-40-[view(50)]-10-[view1]" options:0 metrics:nil views:views]];

//    黄色view1横向的约束

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[view1(>=200)]-20-|" options:0 metrics:nil views:views]];

//    黄色view1竖向的约束

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[view]-10-[view1(50)]" options:0 metrics:nil views:views]];

}

//两个视图的布局 优化demo2

- (void)demo3

{

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

//    如果需要使用autoLayout   translatesAutoresizingMaskIntoConstraints 必须禁用

view.translatesAutoresizingMaskIntoConstraints = NO;

view.backgroundColor = [UIColor redColor];

[self.view addSubview:view];

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

//    如果需要使用autoLayout   translatesAutoresizingMaskIntoConstraints 必须禁用

view1.translatesAutoresizingMaskIntoConstraints = NO;

view1.backgroundColor = [UIColor yellowColor];

[self.view addSubview:view1];

NSDictionary *views = NSDictionaryOfVariableBindings(view,view1);

//    红色view的约束

//    @"H:|-20-[view(>=200)]-20-|"

//    @"V:|-40-[view(50)]-10-[view1]"

//    黄色view1约束

//    @"H:|-20-[view1(>=200)]-20-|"

//    @"V:[view]-10-[view1(50)]"

//    红色view横向的约束

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[view(>=200)]-20-|" options:0 metrics:nil views:views]];

//    红色view 黄色view1 都在同一个父视图 而且两个视图之间 又有关系

//    红色view 黄色view1 竖向的约束

//    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-40-[view(50)]-10-[view1(50)]" options:0 metrics:nil views:views]];

//    红色view 黄色view1 两个视图的高度 都是50

//    [view1(view)]

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-40-[view(50)]-10-[view1(view)]" options:0 metrics:nil views:views]];

//    黄色view1横向的约束

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[view1(>=200)]-20-|" options:0 metrics:nil views:views]];

//    黄色view1竖向的约束

//    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[view]-10-[view1(50)]" options:0 metrics:nil views:views]];

}

//再次优化 demo2

- (void)demo4

{

NSArray *colorList = @[[UIColor redColor],[UIColor yellowColor]];

for (int i=0; i<2; i++) {

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

view.backgroundColor = colorList[i];

view.translatesAutoresizingMaskIntoConstraints = NO;

view.tag = 10+i;

[self.view addSubview:view];

}

UIView *redView = [self.view viewWithTag:10];

UIView *yellowView = [self.view viewWithTag:11];

NSDictionary *views = NSDictionaryOfVariableBindings(redView,yellowView);

//    两个视图 横向的约束

NSArray *constraints = @[@"H:|-20-[redView(>=200)]-20-|",@"H:|-20-[yellowView(>=200)]-20-|"];

for (NSString *VFL in constraints) {

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:VFL options:0 metrics:nil views:views]];

}

//    两个视图的竖向约束

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-40-[redView(50)]-10-[yellowView(redView)]" options:0 metrics:nil views:views]];

}

//三个视图

- (void)demo5

{

NSArray *colorList = @[[UIColor redColor],[UIColor yellowColor],[UIColor blueColor]];

for (int i=0; i<3; i++) {

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

view.translatesAutoresizingMaskIntoConstraints = NO;

view.backgroundColor = colorList[i];

view.tag = 10+i;

[self.view addSubview:view];

}

UIView *redView = [self.view viewWithTag:10];

UIView *yellowView = [self.view viewWithTag:11];

UIView *blueView = [self.view viewWithTag:12];

NSDictionary *views = NSDictionaryOfVariableBindings(redView,yellowView,blueView);

//    @"H:|-20-[redView>=200]-20-|"

//    @"H:|-20-[yellowView>=100]-10-[blueView(yellowView)]-20-|"

NSArray *HList = @[@"H:|-20-[redView(>=200)]-20-|",@"H:|-20-[yellowView(>=100)]-10-[blueView(yellowView)]-20-|"];

//    红色视图与黄色视图竖向的关系,红色视图与蓝色视图竖向的关系

NSArray *VList = @[@"V:|-40-[redView(50)]-10-[yellowView(redView)]",@"V:[redView]-10-[blueView(redView)]"];

for (int i=0; i<VList.count; i++) {

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:HList[i] options:0 metrics:nil views:views]];

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:VList[i] options:0 metrics:nil views:views]];

}

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

@end

AWCollectionViewDialLayout

封装好的类

时间: 2024-08-01 12:32:57

CoreData(数据持久化的方式)的相关文章

(转)iOS XML JSON SQLite CoreData 数据持久化

一.文件操作 1.因为应用是在沙盒(Sandbox)中的,在文件读写权限上受到限制,只能在几个目录下读写文件: * Documents:应用中用户数据可以放在这里,iTunes备份和恢复的时候会包括此目录 * tmp:存放临时文件,iTunes不会备份和恢复此目录,此目录下文件可能会在应用退出后删除 * Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下的文件不会在应用退出删除 2.相关方法:       # 使用NSSearchPathForDiretoriesI

CoreData数据持久化

CoreData介绍 CoreData是一门功能强大的数据持久化技术,位于SQLite数据库之上,它避免了SQL的复杂性,能让我们以更自然的方式与数据库进行交互.CoreData提供数据–OC对象映射关系来实现数据与对象管理,这样无需任何SQL语句就能操作他们. CoreData数据持久化框架是Cocoa API的一部分,?次在iOS5 版本的系统中出现,它允许按照实体-属性-值模型组织数据,并以XML.?进制文件或者SQLite数据?件的格式持久化数据 CoreData与SQLite进行对比

利用GCD进行数据持久化的方式(二)

如果各位看官看过我上一篇利用GCD持久化方式(一)那我在这里对一些相同的参数就不在做过多的介绍了,还请各位见谅. 还是按照惯例,先搞一个路径用来存储数据 NSString *path = [NSString stringWithFormat:@"%@/Documents/myData.text",NSHomeDirectory()]; NSLog(@" %@",path); 这里我们创建一条普通的异步线程就可以 dispatch_queue_t queue = di

标准架构~业务层到底是否应该关注数据持久化的方式

业务层,你不能知道数据库的实现细节 这个话题也是网上谈论的非常多的,你的业务层是否会包含你的数据层的相关架构技术,如,你的数据层的持久化通过EF来实现,那么你的业务层是否也应该引入EntityFrameworks程序集?占占还是会告诉你,不应该,因为这样会使你的业务不再是纯粹的业务,它会依赖由你的数据层的持久化实现的技术,这是不对的,我们需要把业务层解藕出来,只有这样,你的数据层在进行技术切换时,业务层才不会受到影响,当然,这是理所当然的,如果你的数据库换技术了,还会影响到你的业务层,那么,你这

数据持久化的方式

Plist 文件:plist 文件当修改时会将原来的值给重新覆盖掉. NSUserDefaults: 存储一个用户的设置信息,比如记录用户是否是第一次启动程序.存放在 Library 下的 preferences 文件夹下. 文件读写: 文件读写是将数据保存成一个文件,存储在本地,但是只针对于四种数据类型,NSData,NSString,NSArray,NSDictionary. 归档和反归档: 可以对自定义的类来进行数据持久化存储. 数据库: 数据库来实现数据持久化存储的便利性在于可以方便的进

redis 数据持久化 aof方式

打开redis的运行目录,选择数据库2(select 2,是空集)可以看到dump.rdb的上次保存时间是今天中午1:58 添加2条数据: 再查看dump.rdb,保存时间是现在(说明从1:58到现在没有修改过key) 在dump.rdb中可以看到刚才保存进入的数据,但是当添加第三个数据addr3时,dump.rdb的修改时间是不会变的,没有达到快照备份的频率. 现在选择标号为3数据库,添加2条数据,此时还未达到快照持久化的频率,所以默认dump.rdb中还没有这两个数据,dump.rdb的修改

Android数据持久化的方式总结

一.SharedPreferences 以.xml格式的文件进行存储,存储位置在data/data/package/shared_prefs/目录下. 存储步骤: 1.创建文件:getSharedPreferences(name, mode);name为文件名,如果有此文件存在,不再创建,直接用此文件. 2.获取文件编辑器:SharedPreferences.Editor se=preferences.edit(); 3.存入数据:se.putString("et_content",

iOS数据持久化方式分析

iOS数据持久化的方式一般为:plist文件写入.对象归档.SQLite数据库.CoreData. plist文件写入.对象归档一般用于小的数据量. SQLite数据库.CoreData则用于大的数据量. SQLite是一款轻型的数据库,是一种关系型数据库管理系统,他的设计目的是嵌入式设备中使用. SQLite占用资源非常低,非常适合移动设备中使用,而且是开源免费的 SQLite的数据库操作其实和常规的数据库操作流程是一样的: 1.打开数据库 sqlite3_open() 2.准备SQL语句,采

iOS -数据持久化方式-以真实项目讲解

前面已经讲解了SQLite,FMDB以及CoreData的基本操作和代码讲解(CoreData也在不断学习中,上篇博客也会不断更新中).本篇我们将讲述在实际开发中,所使用的iOS数据持久化的方式以及怎么会使用到这些方式,都会以本人实际开发的场景为例,大约需要花10-15分钟,欢迎大家指正. 一.前言 和大家说一个真实故事,前年我去美图面试(当时的技术仅仅是UI和接口的实现,并不注重很多底层实现和很多概念的原理,换句话说,就是真正的码农),过了技术第一轮和第二轮(前两年的也就是问问技术点的实现),