首页 > 代码库 > 源码-0203-06-自定义等高cell05-代码-Autolayout
源码-0203-06-自定义等高cell05-代码-Autolayout
//// XMGDealsViewController.m// 06-自定义等高cell01-storyboard#import "XMGDealsViewController.h"#import "XMGDeal.h"#import "XMGDealCell.h"@interface XMGDealsViewController ()/** 所有的团购数据 */@property (nonatomic, strong) NSArray *deals;@end@implementation XMGDealsViewController- (NSArray *)deals{ if (_deals == nil) { // 加载plist中的字典数组 NSString *path = [[NSBundle mainBundle] pathForResource:@"deals.plist" ofType:nil]; NSArray *dictArray = [NSArray arrayWithContentsOfFile:path]; // 字典数组 -> 模型数组 NSMutableArray *dealArray = [NSMutableArray array]; for (NSDictionary *dict in dictArray) { XMGDeal *deal = [XMGDeal dealWithDict:dict]; [dealArray addObject:deal]; } _deals = dealArray; } return _deals;}- (void)viewDidLoad { [super viewDidLoad]; // UINib *nib = [UINib nibWithNibName:NSStringFromClass([XMGDealCell class]) bundle:nil];// [self.tableView registerNib:nib forCellReuseIdentifier:@"deal"]; [self.tableView registerClass:[XMGDealCell class] forCellReuseIdentifier:@"deal"];}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}#pragma mark - Table view data source- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.deals.count;}- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { //创建cell XMGDealCell *cell = [XMGDealCell cellWithTableView:tableView]; // 取出模型数据 cell.deal = self.deals[indexPath.row]; return cell;}@end
//// XMGDealCell.h// 06-自定义等高cell01-storyboard#import <UIKit/UIKit.h>@class XMGDeal;@interface XMGDealCell : UITableViewCell/** 团购模型数据 */@property (nonatomic, strong) XMGDeal *deal;+ (instancetype)cellWithTableView:(UITableView *)tableView;@end
//// XMGDealCell.m// 06-自定义等高cell01-storyboard#import "XMGDealCell.h"#import "XMGDeal.h"//define this constant if you want to use Masonry without the ‘mas_‘ prefix#define MAS_SHORTHAND//define this constant if you want to enable auto-boxing for default syntax#define MAS_SHORTHAND_GLOBALS#import "Masonry.h"@interface XMGDealCell()@property (weak, nonatomic) UIImageView *iconView;@property (weak, nonatomic) UILabel *titleLabel;@property (weak, nonatomic) UILabel *priceLabel;@property (weak, nonatomic) UILabel *buyCountLabel;@end@implementation XMGDealCell+ (instancetype)cellWithTableView:(UITableView *)tableView{ static NSString *ID = @"deal"; // 创建cell XMGDealCell *cell = [tableView dequeueReusableCellWithIdentifier:ID]; if (cell == nil) { cell = [[XMGDealCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID]; } return cell;}// 1.在initWithStyle:reuseIdentifier:方法中添加子控件- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{ if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { CGFloat margin = 10; UIImageView *iconView = [[UIImageView alloc] init]; [self.contentView addSubview:iconView]; self.iconView = iconView; [iconView makeConstraints:^(MASConstraintMaker *make) { make.width.equalTo(100); make.left.top.offset(margin); make.bottom.offset(-margin); }]; UILabel *titleLabel = [[UILabel alloc] init]; [self.contentView addSubview:titleLabel]; self.titleLabel = titleLabel; [titleLabel makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(iconView); make.left.equalTo(iconView.right).offset(margin); make.right.offset(-margin); }]; UILabel *priceLabel = [[UILabel alloc] init]; priceLabel.textColor = [UIColor orangeColor]; [self.contentView addSubview:priceLabel]; self.priceLabel = priceLabel; [priceLabel makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(titleLabel); make.bottom.equalTo(iconView); make.width.equalTo(70); }]; UILabel *buyCountLabel = [[UILabel alloc] init]; buyCountLabel.textAlignment = NSTextAlignmentRight; buyCountLabel.font = [UIFont systemFontOfSize:14]; buyCountLabel.textColor = [UIColor lightGrayColor]; [self.contentView addSubview:buyCountLabel]; self.buyCountLabel = buyCountLabel; [buyCountLabel makeConstraints:^(MASConstraintMaker *make) { make.bottom.equalTo(priceLabel); make.right.equalTo(titleLabel); make.left.equalTo(priceLabel.right).offset(margin); }]; } return self;}// 3.重写模型的set方法- (void)setDeal:(XMGDeal *)deal{ _deal = deal; // 设置数据 self.iconView.image = [UIImage imageNamed:deal.icon]; self.titleLabel.text = deal.title; self.priceLabel.text = [NSString stringWithFormat:@"¥%@", deal.price]; self.buyCountLabel.text = [NSString stringWithFormat:@"%@人已购买", deal.buyCount];}@end
//// XMGDeal.h// 06-自定义等高cell01-storyboard#import <Foundation/Foundation.h>@interface XMGDeal : NSObject@property (strong, nonatomic) NSString *buyCount;@property (strong, nonatomic) NSString *price;@property (strong, nonatomic) NSString *title;@property (strong, nonatomic) NSString *icon;+ (instancetype)dealWithDict:(NSDictionary *)dict;@end
//// XMGDeal.m// 06-自定义等高cell01-storyboard#import "XMGDeal.h"@implementation XMGDeal+ (instancetype)dealWithDict:(NSDictionary *)dict{ XMGDeal *deal = [[self alloc] init]; // deal.title = dict[@"title"];// deal.icon = dict[@"icon"];// deal.buyCount = dict[@"buyCount"];// deal.price = dict[@"price"]; // KVC - Key Value Coding [deal setValuesForKeysWithDictionary:dict]; return deal;}@end
源码-0203-06-自定义等高cell05-代码-Autolayout
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。