ios8 使用storyboard 进行自动布局

来源:互联网 发布:php怎么返回json数据 编辑:程序博客网 时间:2024/06/17 04:13
e

常见符号  

H:

水平布局(默认)

V:

垂直布局

|

superView的边界,水平布局模式下,放在左边是左边界,放在右边是右边界;处置布局模式下,则相应的为上边界和下边界

- 

标准间隔距离

-N-

长度为N像素点的间隔距离

[view]

被约束的view

==>=<=

用于限制view的长宽

@N

约束生效的优先级,最高是1000,等级高的优先考虑

例如:

    [NSLayoutConstraint constraintsWithVisualFormat:@"|-50-[redView(==100)]-30-[blueView(==100)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(redView,blueView)];

其中,@"|-50-[redView(==100)]-30-[blueView(==100)]"的意思理解为:redView宽度为100,距离superView的左边界为50,与blueView的间距始终保持30blueView的宽度为100

[objc] view plaincopy
  1. - (void)viewDidLoad {  
  2.     [super viewDidLoad];  
  3.     self.view.backgroundColor = [UIColor whiteColor];  
  4.     // 1 创建三个视图 红/绿/蓝/黄/橙色视图  
  5.       
  6.     // 红  
  7.     UIView *redView = [self alive];  
  8.     redView.backgroundColor = [UIColor redColor];  
  9.     [self.view addSubview:redView];  
  10.     // 绿  
  11.     UIView *greenView = [self alive];  
  12.     greenView.backgroundColor = [UIColor greenColor];  
  13.     [self.view addSubview:greenView];  
  14.     // 蓝  
  15.     UIView *blueView = [self alive];  
  16.     blueView.backgroundColor = [UIColor blueColor];  
  17.     [self.view addSubview:blueView];  
  18.     // 黄  
  19.     UIView *yellowView = [self alive];  
  20.     yellowView.backgroundColor = [UIColor yellowColor];  
  21.     [self.view addSubview:yellowView];  
  22.     // 橙  
  23.     UIView *orangeView = [self alive];  
  24.     orangeView.backgroundColor = [UIColor orangeColor];  
  25.     [self.view addSubview:orangeView];  
  26.       
  27.     [self.view addConstraints:[self portraitConstraints:redView :greenView :blueView yellowView:yellowView orangeView:orangeView]];  
  28.       
  29. }  
  30. // 这样写完全是为了代码的方便使用,创建对象的同时初始化控件  
  31. - (UIView *)alive  
  32. {  
  33.     UIView *newView = [UIView new];  
  34.     newView.translatesAutoresizingMaskIntoConstraints = NO;  
  35.     return newView;  
  36. }  
  37. - (NSMutableArray *) portraitConstraints:(UIView *)redView :(UIView *)greenView :(UIView *)blueView yellowView:(UIView *)yellowView orangeView:(UIView *)orangeView  
  38. {  
  39.     NSMutableArray *array = [NSMutableArray array];  
  40.     // 注1:红色视图的宽度大于等于10 小于30    黄色视图的宽度大于40 小于120  水平  
  41.     [array addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[redView(>=10,<=30)]-20-[greenView(>=40,<=120)]-20-[yellowView]-20-|" options:0 metrics:nil  
  42.                                                                              views:NSDictionaryOfVariableBindings(redView, greenView, yellowView)]];  
  43.     // 注2:垂直方向 red高度H:100<= <=160  蓝色 H:30<= <=60  橙色待定  
  44.     [array addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-70-[redView(>=100,<=160)]-20-[blueView(>=30,<=60)]-[orangeView]-20-|" options:0 metrics:nil  
  45.                                                                          views:NSDictionaryOfVariableBindings(redView, blueView, orangeView)]];  
  46.     // 和注2类似  
  47.     [array addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-70-[greenView(>=100,<=160)]-20-[blueView(>=30,<=60)]-[orangeView]-20-|" options:0 metrics:nil  
  48.                                                                          views:NSDictionaryOfVariableBindings(greenView, blueView, orangeView)]];  
  49.     // 和注2类似   或许有人会问 为什么得添加黄色和绿色,原因很简单,就是为了满足各个约束,避免造成约束不足  
  50.     [array addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-70-[yellowView(>=100,<=160)]-20-[blueView(>=30,<=60)]-[orangeView]-20-|" options:0 metrics:nil  
  51.                                                                          views:NSDictionaryOfVariableBindings(yellowView, blueView, orangeView )]];  
  52.       
  53.       
  54.     // 注3:控制blued的宽度  
  55.     [array addObjectsFromArray:[NSLayoutConstraint  
  56.                                           constraintsWithVisualFormat:@"H:|-20-[blueView]-120-|" options:0 metrics:nil  
  57.                                           views:NSDictionaryOfVariableBindings(blueView)]];  
  58.     // 注4:为橙色高度添加约束条件  
  59.     [array addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[blueView]-20-[orangeView(>=blueView)]-20-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(blueView, orangeView)]];  
  60.       
  61.     // 注4:为橙色添加宽度约束条件  
  62.     [array addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[orangeView]-20-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(blueView, orangeView)]];  
  63.     return array;  
  64. }  
0 0
原创粉丝点击