在iOS7中让表视图变成iOS6的圆角矩形与纯汉字文本的cell高度自适应

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath

{if([cell respondsToSelector:@selector(tintColor)]) {if(tableView ==self.aTableView) {

CGFloat cornerRadius=5.f;

cell.backgroundColor=UIColor.clearColor;

CAShapeLayer*layer =[[CAShapeLayer alloc] init];

CGMutablePathRef pathRef=CGPathCreateMutable();

CGRect frame=cell.bounds;

frame.origin.x= frame.origin.x+5;

frame.size.width= frame.size.width-20;

CGRect bounds=frame;

BOOL addLine=NO;if(indexPath.row ==0&& indexPath.row == [tableView numberOfRowsInSection:indexPath.section]-1) {

CGPathAddRoundedRect(pathRef, nil, bounds, cornerRadius, cornerRadius);

}elseif(indexPath.row ==0) {

CGPathMoveToPoint(pathRef, nil, CGRectGetMinX(bounds), CGRectGetMaxY(bounds));

CGPathAddArcToPoint(pathRef, nil, CGRectGetMinX(bounds), CGRectGetMinY(bounds), CGRectGetMidX(bounds), CGRectGetMinY(bounds), cornerRadius);

CGPathAddArcToPoint(pathRef, nil, CGRectGetMaxX(bounds), CGRectGetMinY(bounds), CGRectGetMaxX(bounds), CGRectGetMidY(bounds), cornerRadius);

CGPathAddLineToPoint(pathRef, nil, CGRectGetMaxX(bounds), CGRectGetMaxY(bounds));

addLine=YES;

}elseif(indexPath.row == [tableView numberOfRowsInSection:indexPath.section]-1) {

CGPathMoveToPoint(pathRef, nil, CGRectGetMinX(bounds), CGRectGetMinY(bounds));

CGPathAddArcToPoint(pathRef, nil, CGRectGetMinX(bounds), CGRectGetMaxY(bounds), CGRectGetMidX(bounds), CGRectGetMaxY(bounds), cornerRadius);

CGPathAddArcToPoint(pathRef, nil, CGRectGetMaxX(bounds), CGRectGetMaxY(bounds), CGRectGetMaxX(bounds), CGRectGetMidY(bounds), cornerRadius);

CGPathAddLineToPoint(pathRef, nil, CGRectGetMaxX(bounds), CGRectGetMinY(bounds));

}else{

CGPathAddRect(pathRef, nil, bounds);

addLine=YES;

}

layer.path=pathRef;

CFRelease(pathRef);

layer.fillColor= [UIColor colorWithWhite:1.f alpha:0.8f].CGColor;if(addLine ==YES) {

CALayer*lineLayer =[[CALayer alloc] init];

CGFloat lineHeight= (1.f /[UIScreen mainScreen].scale);

lineLayer.frame= CGRectMake(CGRectGetMinX(bounds)+10, bounds.size.height-lineHeight, bounds.size.width-10, lineHeight);

lineLayer.backgroundColor=tableView.separatorColor.CGColor;

[layer addSublayer:lineLayer];

}

UIView*testView =[[UIView alloc] initWithFrame:bounds];

[testView.layer insertSublayer:layer atIndex:0];

testView.backgroundColor=UIColor.clearColor;

cell.backgroundView=testView;

}

}

}

/**

* 计算方式:

step1:数一下一行能显示几个汉字

step2:算一下一共几行

step3:如果汉字不满一行按一行一算

step4:用行数乘以行高*/intlineCount =20;

CGFloat lbContentHeight= lbQ.text.length /lineCount;if(lbQ.text.length %lineCount) {

lbContentHeight++;

}

lbContentHeight*=20;

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航