使用Masonryframe跟bounds为0的情况

原创 2017年01月03日 17:55:51

AutoLayout关于更新的几个方法的区别

setNeedsLayout:告知页面需要更新,但是不会立刻开始更新。执行后会立刻调用layoutSubviews。

layoutIfNeeded:告知页面布局立刻更新。所以一般都会和setNeedsLayout一起使用。如果希望立刻生成新的frame需要调用此方法,利用这点一般布局动画可以在更新布局后直接使用这个方法让动画生效。

layoutSubviews:系统重写布局

setNeedsUpdateConstraints:告知需要更新约束,但是不会立刻开始

updateConstraintsIfNeeded:告知立刻更新约束

updateConstraints:系统更新约束

Masonry使用注意事项

用mas_makeConstraints的那个view需要在addSubview之后才能用这个方法

mas_equalTo适用数值元素,equalTo适合多属性的比如make.left.and.right.equalTo(self.view)

方法and和with只是为了可读性,返回自身,比如make.left.and.right.equalTo(self.view)和make.left.right.equalTo(self.view)是一样的。

因为iOS中原点在左上角所以注意使用offset时注意right和bottom用负数。


例如,获取_detail的frame

_detail = [UILabel new];

    _detail.numberOfLines = 0;

    _detail.font = [UIFont systemFontOfSize:16.f];

    [_bgScro addSubview:_detail];

    [_detail mas_makeConstraints:^(MASConstraintMaker *make) {

        make.left.equalTo(self.view.mas_left).with.offset([Scale myWidth:10.f]);

        make.right.equalTo(self.view.mas_right).with.offset( - [Scale myWidth:10.f]);

        make.top.equalTo(_time.mas_bottom).with.offset([Scale myWidth:10.f]);

    }];


-(void)webFrame{

    [self.view layoutIfNeeded];

    CGFloat frameY = _detail.frame.origin.y + _detail.bounds.size.height;

    _webView.frame = CGRectMake(0, frameY, kScreenW, kScreenH - frameY);

}


【iOS学习笔记 15-12-3】关于masonry布局中的frame和bounds

iPhone每年更新一款新的产品,屏幕也开始出现碎片化问题。所以在iPhone开发上面也碰到了和安卓一样不可避免的问题,就是不同屏幕的适配。 这些在面试中,也有面试官问到过,之前一直在忙着找工作的事,...
  • u013883974
  • u013883974
  • 2015年12月03日 16:29
  • 4785

iOS Masonry布局获取Frame

方法1 [self.scrollView mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.mas_equalTo(...
  • sadsadaadsd
  • sadsadaadsd
  • 2017年09月28日 16:11
  • 464

Masonry 使用过程中遇到的一些坑

前段时间尝试着使用Masonry来布局,感觉比较好用,其使用的过程中也没有出现什么问题,但是昨天在一个界面上添加自定义弹出框的时候,则出现了问题: make.top.mas_equalTo(self...
  • jimZT
  • jimZT
  • 2016年07月01日 14:57
  • 1026

Masonry2个小技巧

本文介绍使用Masonry时,怎么得到真实frame,以及如何实现动画
  • kyfxbl
  • kyfxbl
  • 2015年08月19日 20:59
  • 2152

iOS设备横屏时,frame和bounds的分别

iOS设备横屏时,视图的frame保持不变,但bounds会发生变化。
  • u010962810
  • u010962810
  • 2014年07月18日 12:16
  • 2534

index 0 beyond bounds for empty array

index 0 beyond bounds for empty array
  • wengyupeng
  • wengyupeng
  • 2016年10月16日 15:48
  • 1330

iOS reason: '*** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array'

原因: 意思是你在使用数组的时候,比如你有0-8 共9个对象,可你要去取第10个元素array[9]([array objectAtIndex:9] )那肯定出错了,可以看看是哪个地方的数组下标用错...
  • yuhao309
  • yuhao309
  • 2017年03月14日 21:03
  • 2136

uncaught exception 'CALayerInvalidGeometry', reason: 'CALayer bounds contains NaN: [nan 0; 600 300]'

原因 我遇到的是,存在出数为0的情况时,所得结果为NaN。 解决方法 添加判断,处理错误 if(isnan(ecg)){ //isnan为系统函数,判断结果是否为NaN //...
  • u011439689
  • u011439689
  • 2015年07月21日 09:42
  • 1700

iOS 类簇及越界处理

估计做iOS开发的朋友都遇到多一个问题,就是数组越界, -[__NSArray0 objectAtIndex:]: index 1 beyond bounds for empty NSArr...
  • zyx196
  • zyx196
  • 2015年10月29日 16:15
  • 2382

解决[__NSArrayM objectAtIndex:]: index 0 beyon Objective-C异常Bug方法

*** Terminating app due to uncaught exception ‘NSRangeException’, reason: ‘*** -[__NSArrayM objectAt...
  • lgm252008
  • lgm252008
  • 2013年06月27日 07:52
  • 32242
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用Masonryframe跟bounds为0的情况
举报原因:
原因补充:

(最多只允许输入30个字)