UITableviewCell textLabel在ios7中不可见

Posted

技术标签:

【中文标题】UITableviewCell textLabel在ios7中不可见【英文标题】:UITableviewCell textLabel not visible in ios7 【发布时间】:2014-02-27 07:38:00 【问题描述】:

我正在使用以下代码显示UITableView的单元格,

static NSString *identifier=@"reusableIdentifier";
        UITableViewCell *cell=(UITableViewCell*)[tableView dequeueReusableCellWithIdentifier:identifier];
        cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
        NSLog(@"%d",indexPath.row);
        [cell.textLabel setText:@"hi"];
        cell.textLabel.font = [UIFont fontWithName:@"Verdana" size:12.0];
        [cell.textLabel sizeToFit];
        cell.textLabel.transform =  CGAffineTransformMakeRotation(M_PI_2);
        cell.textLabel.backgroundColor = [UIColor clearColor];
        cell.textLabel.textAlignment = NSTextAlignmentCenter;
        [cell.textLabel setTextColor:[UIColor blackColor]];
        cell.backgroundColor=[UIColor clearColor];
        cell.selectionStyle=UITableViewCellSelectionStyleBlue;
        NSLog(@"textlabel frame %@",NSStringFromCGRect(cell.textLabel.frame));
        return cell;

ios 6 中工作正常,在 ios6 中显示 textlabel,但在 ios7 中不显示 textLabel。

除了 textLabel 在 ios7 中一切正常。

在写sizetofit之前还有一件事,textLabel的frame是(0,0,0,0)

但在添加sizetofit 之后,它的 (0,0,12,15),即使它没有显示 textLabel。

ios 7 中的表格视图 iOS 6 中的表格视图

【问题讨论】:

试试这个 cell.textLabel.contentMode=UIViewContentModeCenter; @CharanGiri 试过但没用。 【参考方案1】:

只需用这个替换你的代码:

-(void) viewDidLoad

    CGAffineTransform rotateTable = CGAffineTransformMakeRotation(-M_PI_2);
    self.tableView.transform = rotateTable;
    self.tableView.frame = CGRectMake(0, 100,self.tableView.frame.size.width, self.tableView.frame.size.height);


-(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView

    return 1;


-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

    return 10;


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    static NSString *identifier=@"reusableIdentifier";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];

    if (!cell) 
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
    
     NSLog(@"%d",indexPath.row);
    [cell.textLabel setText:@"hi"];

    cell.textLabel.font = [UIFont fontWithName:@"Verdana" size:12.0];
    [cell.textLabel sizeToFit];
    cell.textLabel.transform =  CGAffineTransformMakeRotation(M_PI_2);

    cell.textLabel.backgroundColor = [UIColor clearColor];
    cell.textLabel.textAlignment = NSTextAlignmentCenter;

    [cell.textLabel setTextColor:[UIColor blackColor]];
    cell.backgroundColor=[UIColor clearColor];

    cell.selectionStyle=UITableViewCellSelectionStyleBlue;
    NSLog(@"textlabel frame %@",NSStringFromCGRect(cell.textLabel.frame));

    return cell;

【讨论】:

谢谢但不起作用,你认为你的代码中的哪一点应该解决我的问题? 我已经检查过了。工作正常。所有单元格都显示“hi”; 添加对您在代码中纠正的问题的解释会很方便。

以上是关于UITableviewCell textLabel在ios7中不可见的主要内容,如果未能解决你的问题,请参考以下文章

在 UITableViewCell 中设置 textLabel 的宽度

iPhone UITableViewCell:重新定位 textLabel

为啥 UITableViewCell textLabel 属性是可选的?

如何防止 UITableViewCell 中的缩进 contentView 而不是 textLabel

UITableViewCell textlabel 内容不显示任何内容

在 UITableViewCell 中编辑 TextLabel [重复]