首页 > 代码库 > Cell中实现多图展示
Cell中实现多图展示
实现的效果如下:
主要实现代码如下:
1 // 2 // DetailCell.m 3 // Floral 4 // 5 // Created by 思 彭 on 16/9/21. 6 // Copyright © 2016年 思 彭. All rights reserved. 7 // 8 9 #import "DetailCell.h" 10 #import "UIImageView+WebCache.h" 11 #import "UIView+AdjustFrame.h" 12 #import "ImageCollectionView.h" 13 #import "ImageCell.h" 14 15 #define K_SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width) 16 #define K_SCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height) 17 18 @interface DetailCell ()<UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout> 19 { 20 NSArray *imagesArray; // 详情多张图片展示 21 CGFloat imagesHeight; 22 } 23 /** 24 * 头像 25 */ 26 @property (weak, nonatomic) IBOutlet UIImageView *avaterImgView; 27 /** 28 * 用户名 29 */ 30 @property (weak, nonatomic) IBOutlet UILabel *userNameLabel; 31 /** 32 * 描述 33 */ 34 @property (weak, nonatomic) IBOutlet UILabel *contentLabel; 35 /** 36 * 时间 37 */ 38 @property (weak, nonatomic) IBOutlet UILabel *timeLabel; 39 /** 40 * 更多 41 */ 42 @property (weak, nonatomic) IBOutlet UIButton *moreButton; 43 /** 44 * "更多"按钮被点击 45 * 46 * @param sender <#sender description#> 47 */ 48 - (IBAction)moreBUttonClick:(id)sender; 49 /** 50 * collectionView 51 */ 52 @property (weak, nonatomic) IBOutlet UIView *imagesView; 53 /** 54 * 赞 55 */ 56 @property (weak, nonatomic) IBOutlet UIButton *loveButton; 57 /** 58 * 评论 59 */ 60 @property (weak, nonatomic) IBOutlet UIButton *commentButton; 61 /** 62 * 分享 63 */ 64 @property (weak, nonatomic) IBOutlet UIButton *shareButton; 65 @property (weak, nonatomic) IBOutlet UILabel *morningLabel; 66 @property (weak, nonatomic) IBOutlet NSLayoutConstraint *morningLabelTop; 67 @property (weak, nonatomic) IBOutlet NSLayoutConstraint *bottomButtonY; 68 69 @property (nonatomic,strong) ImageCollectionView *collectionView; 70 71 @end 72 73 @implementation DetailCell 74 75 - (void)awakeFromNib { 76 77 [super awakeFromNib]; 78 // Xcode 8必须自己设置,不然不显示 79 self.avaterImgView.layer.cornerRadius = 25; 80 self.avaterImgView.layer.masksToBounds = YES; 81 self.userNameLabel.font = [UIFont systemFontOfSize:14]; 82 self.timeLabel.font = [UIFont systemFontOfSize:14]; 83 self.contentLabel.font = [UIFont systemFontOfSize:14]; 84 self.morningLabel.font = [UIFont systemFontOfSize:14]; 85 self.contentLabel.textColor = [UIColor grayColor]; 86 self.timeLabel.textColor = [UIColor grayColor]; 87 self.morningLabel.textColor = [UIColor grayColor]; 88 // 创建collectionView 89 90 UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc]init]; 91 layout.itemSize = CGSizeMake((K_SCREEN_WIDTH - 15) / 2, (K_SCREEN_WIDTH - 15) / 2); 92 layout.sectionInset = UIEdgeInsetsMake(5,5,5,5); 93 layout.minimumLineSpacing = 5; 94 layout.minimumInteritemSpacing = 0; 95 self.collectionView = [[ImageCollectionView alloc]initWithFrame:CGRectZero collectionViewLayout:layout]; 96 self.collectionView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 97 self.collectionView.dataSource = self; 98 self.collectionView.delegate = self; 99 self.collectionView.backgroundColor = [UIColor clearColor];100 [self.imagesView addSubview:self.collectionView];101 102 // 注册cell103 [self.collectionView registerNib:[UINib nibWithNibName:NSStringFromClass([ImageCell class]) bundle:nil] forCellWithReuseIdentifier:@"cell"];104 }105 106 - (void)setModel:(TieZiListModel *)model{107 108 _model = model;109 [self.avaterImgView sd_setImageWithURL:[NSURL URLWithString:self.model.customer.headImg] placeholderImage:[UIImage imageNamed:@"p_avatar"]];110 self.userNameLabel.text = self.model.customer.userName;111 if ([self.model.customer.content isEqualToString:@""]) {112 113 self.contentLabel.text = @"这家伙很懒,什么也没留下";114 }115 else{116 self.contentLabel.text = self.model.content;117 }118 self.morningLabel.text = self.model.content;119 [self.loveButton setTitle:[NSString stringWithFormat:@"%ld",self.model.read] forState:UIControlStateNormal];120 [self.commentButton setTitle:[NSString stringWithFormat:@"%ld",self.model.comment] forState:UIControlStateNormal];121 [self.shareButton setTitle:[NSString stringWithFormat:@"%ld",self.model.share] forState:UIControlStateNormal];122 // 判空处理123 if (self.model.createDate.length) {124 125 NSString *timeString = [self.model.createDate componentsSeparatedByString:@"."][0];126 self.timeLabel.text = timeString;127 }128 [self.collectionView reloadData];129 self.collectionView.frame = CGRectMake(0, self.imagesView.y - 70, self.imagesView.width, [self getCollectionViewHeight]);130 self.model.cellHeight = 70 + 70 + [self getCollectionViewHeight];131 }132 133 134 /* 更多按钮被点击135 136 @param sender 点击的按钮137 */138 - (IBAction)moreBUttonClick:(id)sender {139 140 if ([self.delegate respondsToSelector:@selector(DidClickMoreButton:)]) {141 [self.delegate DidClickMoreButton:self];142 }143 }144 - (IBAction)zanButtonClick:(id)sender {145 146 [sender setImage:[UIImage imageNamed:@"p_zan-selected"] forState:UIControlStateSelected];147 }148 - (IBAction)commentClick:(id)sender {149 if ([self.delegate respondsToSelector:@selector(DidClickCommentButton:)]) {150 [self.delegate DidClickCommentButton:self];151 }152 }153 - (IBAction)shareButtonClick:(id)sender {154 155 if ([self.delegate respondsToSelector:@selector(DidClickShareButton:)]) {156 [self.delegate DidClickShareButton:self];157 }158 }159 - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{160 161 NSString *attachment = self.model.attachment;162 NSArray *imgArray = [attachment componentsSeparatedByString:@","];163 return imgArray.count;164 }165 166 - (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{167 168 ImageCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];169 NSString *attachment = self.model.attachment;170 cell.backgroundColor = [UIColor greenColor];171 NSArray *imgArray = [attachment componentsSeparatedByString:@","];172 cell.imageName = imgArray[indexPath.row];173 return cell;174 }175 176 - (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section{177 178 return UIEdgeInsetsMake(0,5,0,5);179 }180 181 - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{182 183 return CGSizeMake((K_SCREEN_WIDTH - 15) / 2, (K_SCREEN_WIDTH - 15) / 2);184 }185 186 - (CGFloat)getCollectionViewHeight{187 188 CGFloat collectionViewHeight = 0.0;189 CGFloat height = 0.0;190 NSString *attachment = self.model.attachment;191 NSArray *imgArray = [attachment componentsSeparatedByString:@","];192 if (imgArray.count % 2 != 0) {193 194 height = imgArray.count / 2 + 1;195 }196 else{197 height = imgArray.count / 2;198 }199 collectionViewHeight = height * ((K_SCREEN_WIDTH - 15) / 2) + ((height + 1)* 5);200 return collectionViewHeight;201 }202 @end
写的挺详细哟!!!有问题的可以找我要Demo哟!!
也可以加我的QQ: 1299625033....我们可以一起交流问题,一起学习!!!
Cell中实现多图展示
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。