masonry布局使用priorityLow(),纯代码与xib结合,自己设置cell中for循环自动创立imageView并且自适应cell的高度

作者 : 开心源码 本文共1906个字,预计阅读时间需要5分钟 发布时间: 2022-05-14 共218人阅读

masonry布局,纯代码与xib结合,在自己设置cell中,for循环动态创立imageView,并且自适应cell的高度。

  1. 自适应高度

放眼如今的UI界面设计,可以发现没有任何一个APP可以固定高度,包括文字的换行,图片的数量不确定的种种因素,对于自适应高度已经是基本的要求。

 - (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath {    return 100;}
  • 实现方法也很简单基本就是依靠,预估一个高度,系统自动自己算。
    假如需要这句代码起作用的关键就是 :需要让你的cell内部视图充满你的contentView,也就是内部视图相互关联能够距离顶部,和底部的相关束缚才行。这样通过视图把整个cell撑起来,让cell有应该属于自己的合适的高度。

  1. 优先级 priority

if (i == self.imgeArray.count -1) {      make.bottom.equalTo(imageView.superview).offset(0).priorityLow();  }
  • 优先级(1000),即优先满足,必需满足的束缚条件。
  • 优先级(<1000),即满足了必需满足的条件,条件允许的情况下,次要满足的条件
  • 一个控件(一个view视图),通过top,left,right,以及高度4个束缚,已经能够确定他的位置,假如此时想要把cell的contentView充满就要添加底部bottom束缚,此时就会出现束缚冲突。处理办法就是优先级,设置priorityLow给优先级低的束缚。


  1. masonry布局,纯代码与xib结合,在自己设置cell中,for循环动态创立imageView

@property (weak, nonatomic) IBOutlet UIView *customImagesView;
  • IBOutlet 通过将xib中的控件(甚至是束缚条件)拖到代码里进行进一步加工。
  • customImagesView需要满足的条件就是,关联控件的内部束缚,是符合撑满contentView的所属控件就可。
- (void)setImgeArray:(NSArray *)imgeArray {    _imgeArray = imgeArray;            CGFloat height = 105;    CGFloat margin = 14;    CGFloat customImagesViewLeft = 107;//        CGFloat width = 158;    CGFloat width = (k_SCREEN_WIDTH - customImagesViewLeft - margin * 2) * 0.5;        for (UIView * subView in self.customImagesView.subviews) {        [subView removeFromSuperview];    }        for (int i = 0; i<self.imgeArray.count; i++) {        UIImageView * imageView = [[UIImageView alloc] init];        [imageView setContentMode:UIViewContentModeScaleAspectFill];        [self.customImagesView addSubview:imageView];        imageView.backgroundColor = [UIColor colorWithRandom];        [imageView mas_makeConstraints:^(MASConstraintMaker *make) {                                    make.top.equalTo(imageView.superview).offset(height * (i / 2) + margin * (i / 2));            make.left.equalTo(imageView.superview).offset(width *(i % 2) + margin * (i % 2));            make.width.offset(width);            make.height.offset(height);                        if (i == self.imgeArray.count -1) {                make.bottom.equalTo(imageView.superview).offset(0).priorityLow();            }        }];    }}
  • 通过setter方法拿到接口数据,进行动态创立视图,刷新tableView如此即可以根据显示的内容适应高度



WX20220123-141018@2x.pngWX20220123-141106@2x.pngWechatIMG4.jpeg

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » masonry布局使用priorityLow(),纯代码与xib结合,自己设置cell中for循环自动创立imageView并且自适应cell的高度

发表回复