Skip to content

Commit

Permalink
update SJStaticTableViewComponent under pod
Browse files Browse the repository at this point in the history
  • Loading branch information
knightsj committed Apr 22, 2017
1 parent ec0ba98 commit 0a723b5
Show file tree
Hide file tree
Showing 11 changed files with 93 additions and 57 deletions.
2 changes: 1 addition & 1 deletion SJStaticTableView.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
Pod::Spec.new do |s|

s.name = "SJStaticTableView"
s.version = "1.0.3"
s.version = "1.1.1"
s.summary = "SJStaticTableView can be used to establish ViewControllers which contain static tableview such as setting page and userinfo page."
s.homepage = "https://github.com/knightsj/SJStaticTableView"
s.license = "MIT"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,7 @@
#import "SJStaticTableViewCell.h"

@interface SJStaticTableViewCell (AccessoryDisclosureIndicator)

- (void)configureAccessoryDisclosureIndicatorCellWithViewModel:(SJStaticTableviewCellViewModel *)viewModel;

@end
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,10 @@
#import "SJStaticTableViewCell+AccessoryDisclosureIndicator.h"

@implementation SJStaticTableViewCell (AccessoryDisclosureIndicator)

- (void)configureAccessoryDisclosureIndicatorCellWithViewModel:(SJStaticTableviewCellViewModel *)viewModel
{

//左侧控件的配置
[self layoutLeftPartSubViewsWithViewModel:viewModel];

//右侧存在箭头
Expand All @@ -20,12 +21,60 @@ - (void)configureAccessoryDisclosureIndicatorCellWithViewModel:(SJStaticTablevie
//右侧存在箭头+文字
if ( (viewModel.indicatorLeftTitle) && (viewModel.indicatorLeftLabelSize.width != 0)) {
[self.contentView addSubview:self.indicatorLeftLabel];
[self configureIndicatorLeftLabel];
}

//右侧存在箭头+图片
if ((self.viewModel.indicatorLeftImage) && (viewModel.indicatorLeftImageSize.height != 0)){
[self.contentView addSubview:self.indicatorLeftImageView];
[self configureIndicatorLeftImage];
}
}

//将右侧label的配置从懒加载里抽出来
- (void)configureIndicatorLeftLabel
{

self.indicatorLeftLabel.font = self.viewModel.indicatorLeftLabelTextFont;
self.indicatorLeftLabel.textColor = self.viewModel.indicatorLeftLabelTextColor;
self.indicatorLeftLabel.text = self.viewModel.indicatorLeftTitle;

if (!self.viewModel.hasIndicatorImageAndLabel) {
//只存在右侧Label
self.indicatorLeftLabel.frame = CGRectMake(self.indicatorArrow.frame.origin.x - SJLeftGap - self.viewModel.indicatorLeftLabelSize.width , (self.viewModel.cellHeight - self.viewModel.indicatorLeftLabelSize.height)/2, self.viewModel.indicatorLeftLabelSize.width, self.viewModel.indicatorLeftLabelSize.height);
}else{
//右侧Label和image同时存在
if (self.viewModel.isImageFirst) {

self.indicatorLeftLabel.frame = CGRectMake(SJScreenWidth - SJLeftGap - self.indicatorArrow.bounds.size.width - self.viewModel.indicatorLeftImageAndLabelGap - self.viewModel.indicatorLeftImageSize.width - SJLeftGap - self.viewModel.indicatorLeftLabelSize.width, (self.viewModel.cellHeight - self.viewModel.indicatorLeftLabelSize.height)/2, self.viewModel.indicatorLeftLabelSize.width, self.viewModel.indicatorLeftLabelSize.height);

}else{

self.indicatorLeftLabel.frame = CGRectMake(SJScreenWidth - SJLeftGap - self.indicatorArrow.bounds.size.width - SJLeftGap - self.viewModel.indicatorLeftLabelSize.width, (self.viewModel.cellHeight - self.viewModel.indicatorLeftLabelSize.height)/2, self.viewModel.indicatorLeftLabelSize.width, self.viewModel.indicatorLeftLabelSize.height);
}
}
}

//将右侧image的配置从懒加载里抽出来
- (void)configureIndicatorLeftImage
{
self.indicatorLeftImageView.image = self.viewModel.indicatorLeftImage;

if (!self.viewModel.hasIndicatorImageAndLabel) {
//只存在右侧image
self.indicatorLeftImageView.frame = CGRectMake(self.indicatorArrow.frame.origin.x - SJLeftGap - self.viewModel.indicatorLeftImageSize.width, (self.viewModel.cellHeight - self.viewModel.indicatorLeftImageSize.height)/2, self.viewModel.indicatorLeftImageSize.width , self.viewModel.indicatorLeftImageSize.height);
}else{
//右侧Label和image同时存在
if (self.viewModel.isImageFirst) {

self.indicatorLeftImageView.frame = CGRectMake(SJScreenWidth - SJLeftGap - self.indicatorArrow.bounds.size.width - SJLeftGap - self.viewModel.indicatorLeftImageSize.width, (self.viewModel.cellHeight - self.viewModel.indicatorLeftImageSize.height)/2, self.viewModel.indicatorLeftImageSize.width, self.viewModel.indicatorLeftImageSize.height);

}else{

self.indicatorLeftImageView.frame = CGRectMake(SJScreenWidth - SJLeftGap - self.indicatorArrow.bounds.size.width - self.viewModel.indicatorLeftImageAndLabelGap - self.viewModel.indicatorLeftLabelSize.width - SJLeftGap - self.viewModel.indicatorLeftImageSize.width, (self.viewModel.cellHeight - self.viewModel.indicatorLeftImageSize.height)/2, self.viewModel.indicatorLeftImageSize.width,self.viewModel.indicatorLeftImageSize.height);
}

}
}

@end
1 change: 1 addition & 0 deletions SJStaticTableViewComponent/SJStaticTableViewCell.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,5 @@
//统一的,布局cell左侧部分的内容(标题 / 图片 + 标题),所有系统风格的cell都要调用这个方法
- (void)layoutLeftPartSubViewsWithViewModel:(SJStaticTableviewCellViewModel *)viewModel;


@end
76 changes: 25 additions & 51 deletions SJStaticTableViewComponent/SJStaticTableViewCell.m
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,37 @@ - (void)layoutLeftPartSubViewsWithViewModel:(SJStaticTableviewCellViewModel *)vi

//存在最左边的图片
if (self.viewModel.leftImage) {

[self.contentView addSubview:self.leftImageView];

self.leftImageView.image = self.viewModel.leftImage;
self.leftImageView.frame = CGRectMake(SJLeftGap, (self.viewModel.cellHeight - self.viewModel.leftImageSize.height)/2, self.viewModel.leftImageSize.width , self.viewModel.leftImageSize.height);
}


//存在标题文字
if (self.viewModel.leftTitle.length) {

[self.contentView addSubview:self.leftTitleLabel];

self.leftTitleLabel.font = self.viewModel.leftLabelTextFont;
self.leftTitleLabel.textColor = self.viewModel.leftLabelTextColor;
self.leftTitleLabel.text = self.viewModel.leftTitle;

CGFloat x = 0;
if (_leftImageView) {
x = CGRectGetMaxX(self.leftImageView.frame) + self.viewModel.leftImageAndLabelGap;
}else{
x = SJLeftGap;
}

self.leftTitleLabel.frame = CGRectMake( x, (self.viewModel.cellHeight - self.viewModel.leftTitleLabelSize.height)/2, self.viewModel.leftTitleLabelSize.width, self.viewModel.leftTitleLabelSize.height);
}

}



#pragma mark- switch block
- (void)switchTouched:(UISwitch *)indicatorSwitch
{
Expand All @@ -41,8 +62,7 @@ - (void)switchTouched:(UISwitch *)indicatorSwitch
- (UIImageView *)leftImageView
{
if (!_leftImageView) {
_leftImageView = [[UIImageView alloc] initWithImage:_viewModel.leftImage];
_leftImageView.frame = CGRectMake(SJLeftGap, (_viewModel.cellHeight - _viewModel.leftImageSize.height)/2, _viewModel.leftImageSize.width , _viewModel.leftImageSize.height);
_leftImageView = [[UIImageView alloc] init];
}
return _leftImageView;
}
Expand All @@ -51,16 +71,6 @@ - (UILabel *)leftTitleLabel
{
if (!_leftTitleLabel) {
_leftTitleLabel= [[UILabel alloc] init];
_leftTitleLabel.font = _viewModel.leftLabelTextFont;
_leftTitleLabel.textColor = _viewModel.leftLabelTextColor;
_leftTitleLabel.text = _viewModel.leftTitle;
CGFloat x = 0;
if (_leftImageView) {
x = CGRectGetMaxX(_leftImageView.frame) + _viewModel.leftImageAndLabelGap;
}else{
x = SJLeftGap;
}
_leftTitleLabel.frame = CGRectMake( x, (_viewModel.cellHeight - _viewModel.leftTitleLabelSize.height)/2, _viewModel.leftTitleLabelSize.width, _viewModel.leftTitleLabelSize.height);
}
return _leftTitleLabel;
}
Expand All @@ -82,58 +92,22 @@ - (UIImageView *)indicatorArrow
if (!_indicatorArrow) {
_indicatorArrow = [[UIImageView alloc] initWithImage:[UIImage imageNamed:SJIndicatorArrow]];
_indicatorArrow.frame = CGRectMake(SJScreenWidth - SJLeftGap - _indicatorArrow.bounds.size.width, (_viewModel.cellHeight - _indicatorArrow.bounds.size.height)/2, _indicatorArrow.bounds.size.width, _indicatorArrow.bounds.size.height);
}

}
return _indicatorArrow;
}

- (UILabel *)indicatorLeftLabel
{
if (!_indicatorLeftLabel) {
_indicatorLeftLabel= [[UILabel alloc] init];
_indicatorLeftLabel.font = _viewModel.indicatorLeftLabelTextFont;
_indicatorLeftLabel.textColor = _viewModel.indicatorLeftLabelTextColor;
_indicatorLeftLabel.text = _viewModel.indicatorLeftTitle;

if (!_viewModel.hasIndicatorImageAndLabel) {
_indicatorLeftLabel.frame = CGRectMake(_indicatorArrow.frame.origin.x - SJLeftGap - _viewModel.indicatorLeftLabelSize.width , (_viewModel.cellHeight - _viewModel.indicatorLeftLabelSize.height)/2, _viewModel.indicatorLeftLabelSize.width, _viewModel.indicatorLeftLabelSize.height);
}else{
//同时存在
if (_viewModel.isImageFirst) {

_indicatorLeftLabel.frame = CGRectMake(SJScreenWidth - SJLeftGap - _indicatorArrow.bounds.size.width - _viewModel.indicatorLeftImageAndLabelGap - _viewModel.indicatorLeftImageSize.width - SJLeftGap - _viewModel.indicatorLeftLabelSize.width, (_viewModel.cellHeight - _viewModel.indicatorLeftLabelSize.height)/2, _viewModel.indicatorLeftLabelSize.width, _viewModel.indicatorLeftLabelSize.height);

}else{

_indicatorLeftLabel.frame = CGRectMake(SJScreenWidth - SJLeftGap - _indicatorArrow.bounds.size.width - SJLeftGap - _viewModel.indicatorLeftLabelSize.width, (_viewModel.cellHeight - _viewModel.indicatorLeftLabelSize.height)/2, _viewModel.indicatorLeftLabelSize.width, _viewModel.indicatorLeftLabelSize.height);
}
}

_indicatorLeftLabel= [[UILabel alloc] init];
}
return _indicatorLeftLabel;
}

- (UIImageView *)indicatorLeftImageView
{
if (!_indicatorLeftImageView) {
_indicatorLeftImageView = [[UIImageView alloc] initWithImage:_viewModel.indicatorLeftImage];

if (!_viewModel.hasIndicatorImageAndLabel) {
_indicatorLeftImageView.frame = CGRectMake(_indicatorArrow.frame.origin.x - SJLeftGap - _viewModel.indicatorLeftImageSize.width, (_viewModel.cellHeight - _viewModel.indicatorLeftImageSize.height)/2, _viewModel.indicatorLeftImageSize.width , _viewModel.indicatorLeftImageSize.height);
}else{

if (_viewModel.isImageFirst) {

_indicatorLeftImageView.frame = CGRectMake(SJScreenWidth - SJLeftGap - _indicatorArrow.bounds.size.width - SJLeftGap - _viewModel.indicatorLeftImageSize.width, (_viewModel.cellHeight - _viewModel.indicatorLeftImageSize.height)/2, _viewModel.indicatorLeftImageSize.width, _viewModel.indicatorLeftImageSize.height);

}else{

_indicatorLeftImageView.frame = CGRectMake(SJScreenWidth - SJLeftGap - _indicatorArrow.bounds.size.width - _viewModel.indicatorLeftImageAndLabelGap - _viewModel.indicatorLeftLabelSize.width - SJLeftGap - _viewModel.indicatorLeftImageSize.width, (_viewModel.cellHeight - _viewModel.indicatorLeftImageSize.height)/2, _viewModel.indicatorLeftImageSize.width,_viewModel.indicatorLeftImageSize.height);

}

}

_indicatorLeftImageView = [[UIImageView alloc] init];
}
return _indicatorLeftImageView;
}
Expand Down
4 changes: 4 additions & 0 deletions SJStaticTableViewComponent/SJStaticTableViewController.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#import "SJStaticTableViewHeader.h"
#import "Factory.h"//假数据


@protocol SJStaticTableViewControllerDelegate <NSObject>

@required
Expand All @@ -21,4 +22,7 @@
@property (nonatomic, strong) SJStaticTableView *tableView;
@property (nonatomic, strong) SJStaticTableViewDataSource *dataSource;


- (SJStaticTableviewCellViewModel *)retrieveCellViewModelAtIndexPath:(NSIndexPath *)indexPath;

@end
3 changes: 3 additions & 0 deletions SJStaticTableViewComponent/SJStaticTableViewController.m
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,11 @@
#import "SJStaticTableViewController.h"
#import "SJStaticTableViewDataSource.h"

@interface SJStaticTableViewController()


@end


@implementation SJStaticTableViewController

Expand Down
7 changes: 5 additions & 2 deletions SJStaticTableViewComponent/SJStaticTableViewDataSource.m
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ @interface SJStaticTableViewDataSource()

@implementation SJStaticTableViewDataSource

#pragma mark- Public API

- (instancetype)initWithViewModelsArray:(NSArray *)viewModelsArray configureBlock:(SJStaticCellConfigureBlock)block
{
self = [super init];
Expand All @@ -30,6 +32,7 @@ - (instancetype)initWithViewModelsArray:(NSArray *)viewModelsArray configureBloc
return self;
}

#pragma mark- SJStaticTableViewDataSource
- (SJStaticTableviewCellViewModel *)tableView:(UITableView *)tableview cellViewModelAtIndexPath:(NSIndexPath *)indexPath
{
if (self.viewModelsArray.count > indexPath.section) {
Expand All @@ -49,7 +52,7 @@ - (SJStaticTableviewSectionViewModel *)tableView:(UITableView *)tableView sectio
return nil;
}

#pragma mark - Tableview data source
#pragma mark - Tableview Datasource

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
Expand All @@ -64,7 +67,7 @@ - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

SJStaticTableviewSectionViewModel *sectionViewModel = self.viewModelsArray[indexPath.section];
SJStaticTableviewCellViewModel *cellViewModel = sectionViewModel.cellViewModelsArray[indexPath.row];

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

@property (nonatomic, copy) NSString *sectionHeaderTitle; //该section的标题
@property (nonatomic, copy) NSString *sectionFooterTitle; //该section的标题
@property (nonatomic, strong) NSArray *cellViewModelsArray; //该section的数据源
@property (nonatomic, strong) NSMutableArray *cellViewModelsArray; //该section的数据源

@property (nonatomic, assign) CGFloat sectionHeaderHeight; //header的高度
@property (nonatomic, assign) CGFloat sectionFooterHeight; //footer的高度
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ - (instancetype)initWithCellViewModelsArray:(NSArray *)cellViewModelsArray
_indicatorLeftLabelTextColor = SJIndicatorLeftTitleTextColor;
_indicatorLeftImageSize = CGSizeMake(SJImgWidth, SJImgWidth);
_indicatorLeftImageAndLabelGap = SJRightMiddleGap;
_cellViewModelsArray = cellViewModelsArray;
_cellViewModelsArray = [cellViewModelsArray mutableCopy];
}
return self;
}
Expand Down
Binary file not shown.

0 comments on commit 0a723b5

Please sign in to comment.