iOS、swift技术交流!

屏幕适配(Masonry布局sizeclass)

2016-02-23  本文已影响399人  光明程辉

可以先看一下这里,最后不要忘了给个赞啊!iOS8:
// http://www.cocoachina.com/ios/20141217/10669.html

最原始的写法!!!!

//建立一个红色的VIew
UIView *readView = [[UIView alloc] initWithFrame:CGRectZero];
readView.backgroundColor = [UIColor redColor];

// 取消停靠模式转化为约束的机制
readView.translatesAutoresizingMaskIntoConstraints = NO;
// 添加约束之前需要先添加到父视图之上
[self.view addSubview:readView];

//添加约束
// 添加第一个参数
/**
 *  参数1:该约束所关联的对象1
 *  参数2:该约束的类型
 *  参数3:大于等于、小于或恒等于
 *参数4:该约束所关联的对象2
 *参数5:约束类型
 参数6:比例
 参数7:具体的数值
 */
// 确定 X 坐标
 NSLayoutConstraint *leftLayout = [NSLayoutConstraint
                                  constraintWithItem:readView                                   attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual
                                  toItem:self.view     
                                  attribute:NSLayoutAttributeRight multiplier:1.0
                                       constant:-50];
// 确定Y 坐标
NSLayoutConstraint *right = [NSLayoutConstraint
                             constraintWithItem:readView 
                             attribute:NSLayoutAttributeBottom 
                             relatedBy:NSLayoutRelationEqual 
                             toItem:self.view 
                             attribute:NSLayoutAttributeBottom 
                             multiplier:1.0
                             constant:-50];

// 确定 width
 NSLayoutConstraint *widthLayout = [NSLayoutConstraint
                                    constraintWithItem:readView 
                                    attribute:NSLayoutAttributeWidth 
                                    relatedBy:NSLayoutRelationEqual toItem:nil 
                                    attribute:NSLayoutAttributeWidth
                                    multiplier:1.0
                                    constant:100];

NSLayoutConstraint *heightLayout = [NSLayoutConstraint
                                    constraintWithItem:readView 
                                    attribute:NSLayoutAttributeHeight 
                                    relatedBy:NSLayoutRelationEqual
                                    toItem:nil 
                                    attribute:NSLayoutAttributeHeight 
                                    multiplier:1.0 constant:100];

// 父视图也要添加这4个约束
[self.view addConstraints:@[leftLayout,right,widthLayout,heightLayout]];
  }

使用Masonry

屏幕适配

1> 发展历程
代码计算frame -> autoreszing(父控件和子控件的关系) -> autolayout(任何控件都可以产生关系) -> sizeclass

2> sizeclass

  1. Compact : 紧凑(小)
  2. Any : 任意
  3. Regular : 宽松(大)
  4. 符号代表
  1. 继承性
  1. sizeclass和autolayout的作用
    sizeclass:仅仅是对屏幕进行了分类
    autolayout:对屏幕中各种元素进行约束(位置\尺寸)
01.png

选择view controller


02.png
上一篇下一篇

猜你喜欢

热点阅读