動態計算tablviewcell高度
根據實體類的屬性,計算出要顯示的高度,然後設定tableview代理
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
THDiaryEntry *entry = [self.fetchedResultsController objectAtIndexPath:indexPath];
return [THEntryCell heightForEntry:entry];
}
THEntryCell.m :
+ (CGFloat)heightForEntry:(THDiaryEntry *)entry {
const CGFloat topMargin = 35.0f;
const CGFloat bottomMargin = 80.0f;
const CGFloat minHeight = 106.0f;
UIFont *font = [UIFont systemFontOfSize:[UIFont systemFontSize]];
CGRect boundingBox = [entry.body boundingRectWithSize:CGSizeMake(202, CGFLOAT_MAX) options:(NSStringDrawingUsesFontLeading|NSStringDrawingUsesLineFragmentOrigin) attributes:@{NSFontAttributeName: font} context:nil];
return MAX(minHeight, CGRectGetHeight(boundingBox) + topMargin + bottomMargin);
}
注,cellForRowAtIndexPath方法裡最好不要太多的程式碼,把能抽取的程式碼都抽出來,比如設定屬性以及顯示在cell子類設定,看起來就清晰簡潔的多了
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
THEntryCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
THDiaryEntry *entry = [self.fetchedResultsController objectAtIndexPath:indexPath];
[cell configureCellForEntry:entry];
return cell;
}
THEntryCell.m:
- (void)configureCellForEntry:(THDiaryEntry *)entry {
self.bodyLabel.text = entry.body;
self.locationLabel.text = entry.location;
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEEE, MMMM d yyyy"];
NSDate *date = [NSDate dateWithTimeIntervalSince1970:entry.date];
self.dateLabel.text = [dateFormatter stringFromDate:date];
if (entry.imageData) {
self.mainImageView.image = [UIImage imageWithData:entry.imageData];
} else {
self.mainImageView.image = [UIImage imageNamed:@"icn_noimage"];
}
if (entry.mood == THDiaryEntryMoodGood) {
self.moodImageView.image = [UIImage imageNamed:@"icn_happy"];
} else if (entry.mood == THDiaryEntryMoodAverage) {
self.moodImageView.image = [UIImage imageNamed:@"icn_average"];
} else if (entry.mood == THDiaryEntryMoodBad) {
self.moodImageView.image = [UIImage imageNamed:@"icn_bad"];
}
self.mainImageView.layer.cornerRadius = CGRectGetWidth(self.mainImageView.frame) / 2.0f;
if (entry.location.length > 0) {
self.locationLabel.text = entry.location;
} else {
self.locationLabel.text = @"No location";
}
}
相關文章
- UITableView動態計算Cell高度UIView
- 動態計算控制元件高度控制元件
- 動態生成DOM元素的高度及行數獲取與計算方法
- UITableView 自動計算 cell 高度並快取,再也不用管高度啦UIView快取
- iOS - 計算UITextView 高度 UIScrollView滾動到具體位置iOSUITextView
- IOS 動態改變cell的高度iOS
- 20:球彈跳高度的計算
- 索引高度和索引段大小計算索引
- 動態計算rem的js程式碼REMJS
- CSS 奇技淫巧:動態高度過渡動畫CSS動畫
- 【UniApp】-uni-app-動態計算字型大小(蘋果計算器)APP蘋果
- css實現高度動態變化的佈局CSS
- IM應用中如何計算富文字的高度
- 計算tableView不等高cell高度的幾種方法View
- ARM是計算領域重要動態的中心
- 雲端計算2011動態要聞
- jQuery動態設定div元素的高度和寬度jQuery
- iOS中webView巢狀tableView中動態高度問題iOSWebView巢狀
- AutoLayout 實現固定寬度動態高度的 ScrollViewView
- 在動態IP下遠端連線計算機計算機
- 計算機網路實驗二:動態路由配置計算機網路路由
- iOS初級開發學習筆記:一個頁面中自動計算cell的高度來自適應tableView的高度iOS筆記View
- UITableViewCell 自動高度UIView
- 實時計算 Flink> 產品簡介——最新動態
- web的高度計算-cell-裡面使用-只做記錄Web
- ScrollView與ListView合用問題(正確計算Listview的高度)View
- Java動態程式設計---動態代理Java程式設計
- iOS動態性可複用而且高度解耦的使用者統計埋點實現iOS解耦
- 大資料計算生態之資料計算(二)大資料
- 大資料計算生態之資料計算(一)大資料
- 表示式的動態解析和計算,Flee用起來真香
- 雲端計算生態系統
- 直播平臺搭建,動態設定ListView的高度的兩種方法View
- Android獲取狀態列高度Android
- 精確計算微信小程式scrollview高度,全機型適配微信小程式View
- 行內格式化上下文中的各種高度計算
- 全球獨家視訊:特工隊 - 動態修改計算機系統呼叫計算機
- 監聽div滾動高度