// // GMBaseTableViewCell.m // Gengmei // // Created by 翟国钧 on 15/1/14. // Copyright (c) 2015年 Wanmeichuangyi. All rights reserved. // #import "GMTableViewCell.h" #import "UIView+LineWithAutolayout.h" #import #import #import @implementation GMTableViewCell - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{ self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; if (self) { [self lifeCycle]; } return self; } - (void)awakeFromNib{ [super awakeFromNib]; [self lifeCycle]; } - (void)lifeCycle{ [self setup]; // 保证在 cell layout 前有“全约束” [self cellConstraints]; [self updateCellConstraints]; } - (void)setup{ // 初始一个较大的 bounds,就不会出现在刚刚约束时就出现的 subView 与 contentView 的约束冲突 self.contentView.bounds = [UIScreen mainScreen].bounds; self.selectionStyle = UITableViewCellSelectionStyleNone; self.accessoryType = UITableViewCellAccessoryNone; _bottomLine = [self.contentView addBottomLine]; _detailDisclosure = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"arrow"]]; _detailDisclosure.hidden = YES; [self.contentView addSubview:_detailDisclosure]; [_detailDisclosure mas_makeConstraints:^(MASConstraintMaker *make) { make.right.mas_equalTo(-15); make.centerY.mas_equalTo(0); make.size.sizeOffset(CGSizeMake(7, 11)); }]; _separatedView = [[UIView alloc] init]; _separatedView.hidden = YES; _separatedView.backgroundColor = UIColor.background; [self.contentView addSubview:_separatedView]; [_separatedView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.right.bottom.mas_equalTo(0); make.height.mas_equalTo(10); }]; } - (void)prepareForReuse{ [super prepareForReuse]; // 在 cell 被复用时,也先设置一个较大的 bounds。因为如果即将 layout 的 subview 超出 contentView时,会发出的约束警告,有了这个 bounds,警告就不会出现了 self.contentView.bounds = [UIScreen mainScreen].bounds; } // 的iOS8下发现不重写这个 seperator 不生效 - (UIEdgeInsets)layoutMargins { return UIEdgeInsetsZero; } - (void)setShowArrow:(BOOL)showArrow{ _showArrow = showArrow; _detailDisclosure.hidden = !_showArrow; } - (void)cellConstraints{ } - (void)updateCellConstraints{ } - (void)updateBottomLineConstraintsWithLeft:(CGFloat)left right:(CGFloat)right { [_bottomLine mas_remakeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(left); make.right.mas_equalTo(right); make.bottom.mas_equalTo(0); make.height.mas_equalTo(ONE_PIXEL); }]; } @end @implementation UITableViewCell (Reusable) + (NSString *)defaultReuseIdentifier { return NSStringFromClass([self class]); } @end