[ios]UITableViewCell自适应高度 【转】
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
??? // 列寬
??? CGFloat contentWidth = self.tableView.frame.size.width;
??? // 用何種字體進行顯示
??? UIFont *font = [UIFont systemFontOfSize:13];
????
??? // 該行要顯示的內容
??? NSString *content = [data objectAtIndex:indexPath.row];
??? // 計算出顯示完內容需要的最小尺寸
??? CGSize size = [content sizeWithFont:font constrainedToSize:CGSizeMake(contentWidth, 1000) lineBreakMode:UILineBreakModeWordWrap];
????
??? // 這裏返回需要的高度
??? return size.height;?
}
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
????
??? static NSString *CellIdentifier = @"Cell";
??? // 列寬
??? CGFloat contentWidth = self.tableView.frame.size.width;
??? // 用何種字體進行顯示
??? UIFont *font = [UIFont systemFontOfSize:13];
????
??? // 該行要顯示的內容
??? NSString *content = [data objectAtIndex:indexPath.row];
??? // 計算出顯示完內容需要的最小尺寸
??? CGSize size = [content sizeWithFont:font constrainedToSize:CGSizeMake(contentWidth, 1000) lineBreakMode:UILineBreakModeWordWrap];
????
??? // 構建顯示行
??? UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
??? if (cell == nil) {
??????? cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
??? }
????
??? CGRect rect = [cell.textLabel textRectForBounds:cell.textLabel.frame limitedToNumberOfLines:0];
??? // 設置顯示榘形大小
??? rect.size = size;
??? // 重置列文本區域
??? cell.textLabel.frame = rect;
????
??? cell.textLabel.text = content;
????
??? // 設置自動換行(重要)
??? cell.textLabel.numberOfLines = 0;
??? // 設置顯示字體(一定要和之前計算時使用字體一至)
??? cell.textLabel.font = font;
??? return cell;
}
?
//===========//
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0,0,0,0)];//這個frame是初設的,沒關系,后面還會重新設置其size。
[label setNumberOfLines:0];
NSString *s = @"abcdefghijklmn";
UIFont *font = [UIFont fontWithName:@"Arial" size:12];
CGSize size = CGSizeMake(320,2000);
CGSize labelsize = [s sizeWithFont:font constrainedToSize:size lineBreakMode:UILineBreakModeWordWrap];
[label setFrame:CGRectMake(0,0, labelsize.width, labelsize.height)];
[self.view addSubView:label];
?
=============gengxing==========///
主要有兩個地方需要調整高度,一個是自己創建的UILabel或其它,另一個就是cell的高度。在創建cell的地方只需要定義好label的屬性就行了:
設置完值后再設置frame:
我需要讓cell的高度去適應label,所以調用計算cell高度的方法,在heightForRowAtIndexPath方法中計算label所需的高度即可:
?
為了不讓高度過于混亂,我把最小值設為44,getTextSize只是一個工具方法,用于計算x軸偏移的距離:
?
期間使用了一些公共宏,比如:FONT_CELL等等,只在cellForRowAtIndexPath里面設置好label的基本屬性和frame,計算高度就交給heightForRowAtIndexPath,可以自己對返回值進行修改。
轉載于:https://www.cnblogs.com/jinjiantong/archive/2013/03/22/2975077.html
總結
以上是生活随笔為你收集整理的[ios]UITableViewCell自适应高度 【转】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【常用技巧】标准模板库(STL)
- 下一篇: python读取excel,数字都是浮点