iOS 8表格单元格内容不显示
Posted
技术标签:
【中文标题】iOS 8表格单元格内容不显示【英文标题】:Content in Table cell of iOS 8 is not display 【发布时间】:2016-06-21 09:58:48 【问题描述】:在 ios 9 中一切正常。 但在 iOS 8 中,不显示内容,只显示 imageview。
我所做的是创建一个视图并将标签和 UIImage 添加到该视图。然后将该视图添加到表格 Cell 的 contentView 中
创建视图
- (UIView *)getHeaderView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, HEADER_SECTION_HEIGHT)];
[view setBackgroundColor:[[RNThemeManager sharedManager] colorWithHexString:[_themeComponent valueForKey:@"Layer1Color"]]];
UILabel *taskName = [[UILabel alloc] initWithFrame:CGRectMake(5.0, SECTION_BREAK+3.0, view.frame.size.width-23.0, 20)];
[taskName setFont:[UIFont boldSystemFontOfSize:[[_themeComponent valueForKey:@"RegularFontSize"] intValue]]];
[taskName setText:combinedTask.taskDescription];
[taskName setTextColor: [[RNThemeManager sharedManager] colorWithHexString:[_themeComponent valueForKey:@"textPrimary"]]];
[view addSubview:taskName];
UIImageView *addressView = [[UIImageView alloc]initWithFrame:CGRectMake(5.0, SECTION_BREAK+28.0, 20, 20)];
addressView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@.png", @"Attr_Pin"]];
[view addSubview:addressView];
UILabel *address = [[UILabel alloc] initWithFrame:CGRectMake(35.0, SECTION_BREAK+23.0, view.frame.size.width-35.0, 30)];
[address setFont:[UIFont boldSystemFontOfSize:[[_themeComponent valueForKey:@"SmallFontSize"] intValue]]];
address.lineBreakMode = NSLineBreakByWordWrapping;
address.numberOfLines = 0;
[address setText:[NSString stringWithFormat:@"%@", unit]];
[address setTextColor: [[RNThemeManager sharedManager] colorWithHexString:[_themeComponent valueForKey:@"textPrimary"]]];
[view addSubview:address];
return view;
向表格单元格添加视图
UIView *header= [self getHeaderView:tableView viewForHeaderInSection:section];
cell.taskIdLabel.hidden = YES;
[cell.contentView addSubview:header];
有人有什么想法吗?非常感谢您的帮助。
【问题讨论】:
【参考方案1】:这是因为 iOS 9 Apple 处理的自动布局比以前好。 在返回单元格之前添加 [cell layoutIfNeeded]。 更新 我以前也有同样的问题。这是我用来解决问题的代码块。
- (void) sizeHeaderToFit
//call in viewLayoutSubView
UIView *myHeaderView = self.tableView.tableHeaderView;
[myHeaderView setNeedsLayout];
[myHeaderView layoutIfNeeded];
CGFloat height = [myHeaderView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
myHeaderView.frame = (
CGRect headerFrame = myHeaderView.frame;
headerFrame.size.height = height;
headerFrame;
);
self.tableView.tableHeaderView = myHeaderView;
在 viewDidLayoutSubView 调用它。希望它有助于bạn :))
【讨论】:
我试过 [cell.contentView setNeedsDisplay]; [cell.contentView layoutIfNeeded];还有[cell setNeedsDisplay]; [单元格布局如果需要];昨天,但没有运气。 这里奇怪的是uiimage显示了,而其他的没有以上是关于iOS 8表格单元格内容不显示的主要内容,如果未能解决你的问题,请参考以下文章