2016-06-21 16 views
0

すべてはiOS 9でうまくいきます。
しかし、iOS 8ではコンテンツが表示されず、画像ビューのみが表示されます。iOS 8の表のセルのコンテンツは表示されません

私が行ったことは、ビューを作成し、そのビューにラベルとUIImageを追加することでした。そして、そのビューは、テーブルセルの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]; 

誰もが任意のアイデアを持っていますか?あなたの助けをありがとう。

答えて

0

これは、iOS 9 Appleが以前よりも優れた自動レイアウトを処理するためです。 returnセルの前に[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で呼び出します。ホープそれは助けることができます:))

+0

私は試しました[cell.contentView setNeedsDisplay]; [cell.contentView layoutIfNeeded];また、[cell setNeedsDisplay]; [cell layoutIfNeeded];昨日は運がなかった。 – ndnguyen

+0

ここで奇妙なことはuiimageが表示されているが、他のものは表示されていない – ndnguyen

関連する問題