// // GMBaseTableViewCell.m // Gengmei // // Created by 翟国钧 on 15/1/14. // Copyright (c) 2015年 Wanmeichuangyi. All rights reserved. // #import "GMTableViewCell.h" #import "UIView+LineWithAutolayout.h" #import <Masonry/Masonry.h> #import "GMConstant.h" #import "GMTheme.h" @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]; _bottomLine.backgroundColor = BACKGROUND_COLOR; _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)); }]; } - (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{ } @end