-
Notifications
You must be signed in to change notification settings - Fork 257
Tutorial 2: Create Table Cell with xml layout
zhenglibao edited this page Jun 19, 2019
·
2 revisions
The following is a demo:
<?xml version="1.0" encoding="utf-8"?>
<UIView
layout="flexDirection: row,margin:8" attr="bgColor:white">
<UIImageView layout="width:40,height:40,marginLeft:10,marginRight:10" attr="source:addnewtype.png"/>
<UIView
layout="flex:1">
<UIView
layout="flexDirection:row">
<UILabel name="name" attr="fontSize:14,color:#333333,text:你的名字,linesNum:1"/>
<UILabel name="type" layout="flex:1" attr="fontSize:14,color:#999999,text:一般类型,linesNum:1"/>
<UILabel name="date" attr="fontSize:14,color:#999999,text:5-11,linesNum:1"/>
</UIView>
<UIView layout="height:8"/>
<UILabel name="title"
attr="fontSize:18,color:#333333,text:title,linesNum:1"/>
<UIView layout="height:8"/>
<UILabel name="content" layout="width:100%"
attr="fontSize:14,color:#333333,text:aaa,linesNum:0,lineBreakMode:truncatingTail"/>
<UIView layout="height:8"/>
</UIView>
</UIView>
Actually, there is no difference than view controller layout except that it will be used for tabel cell.
@interface TestTableCell : FlexBaseTableCell
{
UILabel* _name;
UILabel* _model;
UILabel* _sn;
UILabel* _updatedBy;
UIImageView* _return;
}
@end
@implementation TestTableCell
@end
- In cellForRowAtIndexPath callback, call initWithFlex to build cell. In heightForRowAtIndexPath, call heightForWidth to calculate height
- (nonnull UITableViewCell *)tableView:(nonnull UITableView *)tableView cellForRowAtIndexPath:(nonnull NSIndexPath *)indexPath {
static NSString *identifier = @"TestTableCellIdentifier";
TestTableCell* cell = [tableView dequeueReusableCellWithIdentifier:identifier];
if (cell == nil) {
cell = [[TestTableCell alloc]initWithFlex:nil reuseIdentifier:identifier];
}
return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(_cell==nil){
_cell = [[TestTableCell alloc]initWithFlex:nil reuseIdentifier:nil];
}
return [_cell heightForWidth:_table.frame.size.width];
}
That's all.
如果xml中最外层的view设置了flex:1属性,则表示匹配父窗口大小,此时将不能正确计算cell的高度,一定要将xml最外层的view设置为由内容撑开。
Flexbox Introduction & performance (in Chinese)
Tutorial 1: Create View Controller with xml layout
Tutorial 2: Create Table Cell with xml layout
Tutorial 3: Embed xml layout into traditional view hierarchy
Tutorial 4: Use custom view in xml layout
Tutorial 5: Create reusable view using xml layout file