SDAutoLayout控件使用
SDAutoLayout控件使用起来不错,发现之前比较麻烦的问题都被这个控件解决。非常棒的一个控件。
创建项目,加入控件
添加模型类
#import <Foundation/Foundation.h>
@interface News : NSObject
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *content;
@end
添加单元格控件
#import <UIKit/UIKit.h>
#import "News.h"
@interface NewsCell : UITableViewCell
@property (nonatomic, strong) UILabel *labeltitle;
@property (nonatomic, strong) UILabel *labelcontent;
@property (nonatomic, strong) News *news;
@end
#import "NewsCell.h"
#import "UIView+SDAutoLayout.h"
@implementation NewsCell
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
[self setup];
}
return self;
}
/**
* 初始化单元格
*/
- (void)setup {
/**
* 1.把控件添加到父空间里
*/
UILabel *labeltitle = [UILabel new];
labeltitle.textColor = [UIColor grayColor];
labeltitle.font = [UIFont systemFontOfSize:15];
[self.contentView addSubview:labeltitle];
self.labeltitle = labeltitle;
UILabel *labelcontent = [UILabel new];
labelcontent.textColor = [UIColor lightGrayColor];
labelcontent.font = [UIFont systemFontOfSize:14];
[self.contentView addSubview:labelcontent];
self.labelcontent = labelcontent;
/**
* 2.添加约束
*/
CGFloat margin = 10;
self.labeltitle.sd_layout
.leftSpaceToView(self.contentView, margin)
.topSpaceToView(self.contentView, margin)
.rightSpaceToView(self.contentView, margin)
.heightIs(20);
self.labelcontent.sd_layout
.leftEqualToView(self.labeltitle)
.rightEqualToView(self.labeltitle)
.topSpaceToView(self.labeltitle,margin)
.autoHeightRatio(0);
//.heightIs(0);这样写就不会显示出内容
/**
* 3.需要制定底部参考控件
*/
[self setupAutoHeightWithBottomView:self.labelcontent bottomMargin:margin];
}
- (void)setNews:(News *)news {
_news = news;
self.labeltitle.text = news.title;
self.labelcontent.text = news.content;
}
- (void)awakeFromNib {
// Initialization code
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
@end
添加控制器代码
//
// NewsController.m
// sdtest
//
// Created by zhangliang on 16/2/26.
// Copyright © 2016年 com.crscic. All rights reserved.
//
#import "NewsController.h"
#import "MJExtension.h"
#import "UITableView+SDAutoTableViewCellHeight.h"
#import "NewsCell.h"
#import "News.h"
static NSString *reuseIdentifier = @"reuseIdentifier";
@interface NewsController ()
@property (nonatomic, strong) NSArray *list;
@property (nonatomic, strong) NSArray *news;
@end
@implementation NewsController
- (void)viewDidLoad {
[super viewDidLoad];
self.list = @[
@{@"title":@"《把时间当作朋友》——介绍几个十分有效的时间管理工具"
,@"content":@"拿到书之后读了前面几节便欲罢不能,因为书中列举的很多实例确实很符合我的情s,看一本书如果能让我想明白一个道理,或者自己有一点进步就好,这本书做到了,对兴趣的谈论让我茅塞顿开。下面直接上图,有兴趣的可以自己阅读,本博客主要还是介绍几个时间管理软件的。"},
@{@"title":@"《把时间当作朋友》——介绍几个十分有效的时间管理工具"
,@"content":@"拿到书之后读了前面几节便欲罢不能,因为书中列举的很多实例确实很符合我的情况,s绍几个时间管理软件的。"},
@{@"title":@"《把时间当作朋友》——介绍几个十分有效的时间管理工具"
,@"content":@"拿到书之后s几个时间管理软件的。"},
@{@"title":@"《把时间当作朋友》——介绍几个十分有效的时间管理工具"
,@"content":@"拿到书之后读了前面几节便欲罢不能,因为书中列举的很多实例确实很符合我的情况,所以匆匆s茅塞顿开。下面直接上图,有兴趣的可以自己阅读,本博客主要还是介绍几个时间管理软件的。"},
@{@"title":@"《把时间当作朋友》——介绍几个十分有效的时间管理工具"
,@"content":@"拿到书之后读了前面几节便欲罢不能,因为书中列举的很多实例确实很符合我的情况,所以匆匆读完s顿开。下面直接上图,有兴趣的可以自己阅读,本博客主要还是介绍几个时间管理软件的。"},
@{@"title":@"《把时间当作朋友》——介绍几个十分有效的时间管理工具"
,@"content":@"拿到书之后读了前面几节便欲罢不能,因为书中列举的很多实例确实很符合我的情况,所以匆匆读完了此s明白一个道理,或者自己有一点进步就好,这本书做到了,对兴趣的谈论让我茅塞顿开。下面直接上图,有兴趣的可以自己阅读,本博客主要还是介绍几个时间管理软件的。"},
@{@"title":@"《把时间当作朋友》——介绍几个十分有效的时间管理工具"
,@"content":@"拿到书之后读了前面几节便欲罢不能,因为书中列举的很多实例确实很符合我的情况,所以匆匆读完了此书,总体感觉是前面内容比较好,让我有了一些思考,后面的章节却难免落入了俗套,不过看了之后肯定是有一些收获的,个人给7/10分,个人觉得,看一本书如果能让我想明白一个道理,或者自己有一点进步就好,这本书做到了,对兴趣的谈论让我茅塞顿开。下面直接上图,有兴趣的可以自己阅读,本博客主要还是介绍几个时间管理软件的。"},
@{@"title":@"《把时间当作朋友》——介绍几个十分有效的时间管理工具"
,@"content":@"拿到书之后读了前面几节便欲罢不能,因为书中列举的很多实例确实很符合我的情况,所以匆匆读完了此书,总体感觉是前面内容比较好,让我有了一些思考,后面的章节却难免落入了俗套,不过看了之后肯定是有一些收获的,个人给7/10分,个人觉得,看一本书如果能让我想明白一个道理,或者自己有一点进步就好,这本书做到了,对兴趣的谈论让我茅塞顿开。下面直接上图,有兴趣的可以自己阅读,本博客主要还是介绍几个时间管理软件的。"},
@{@"title":@"《把时间当作朋友》——介绍几个十分有效的时间管理工具"
,@"content":@"拿到书之后读了前面几节便欲罢不能,因为书中列举的很多实例确实很符合我的情况,所以匆匆读完了此书,总体感觉是前面内容比较好,让我有了一些思考,后面的章节却难免落入了俗套,不过看了之后肯定是有一些收获的,个人给7/10分,个人觉得,看一本书如果能让我想明白一个道理,或者自己有一点进步就好,这本书做到了,对兴趣的谈论让我茅塞顿开。下面直接上图,有兴趣的可以自己阅读,本博客主要还是介绍几个时间管理软件的。"}
];
__weak __typeof(self) weakSelf = self;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
self.news = [News objectArrayWithKeyValuesArray:self.list];
dispatch_async(dispatch_get_main_queue(), ^{
[weakSelf.tableView reloadData];
});
});
}
#pragma mark - Table view data source
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return self.news.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NewsCell *cell = [tableView dequeueReusableCellWithIdentifier:@"reuseIdentifier"];
if (cell == nil) {
cell = [[NewsCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseIdentifier];
}
News *news = self.news[indexPath.row];
cell.news = news;
return cell;
}
#pragma mark -- 计算高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return [self cellHeightForIndexPath:indexPath cellContentViewWidth:[UIScreen mainScreen].bounds.size.width];
}
@end
结果