4

我有一个表格视图,我想使用以下代码在其上添加图像,

首先通过覆盖layoutSubviews

- (void)layoutSubviews{
    [super layoutSubviews];
self.imageView.frame = CGRectMake(15, 5, 50, 45);
self.imageView.layer.cornerRadius = 5.0f;
self.imageView.layer.masksToBounds = YES;
self.imageView.contentMode = UIViewContentModeScaleAspectFill;
}

然后在-(MyTableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

 NSString *imageUrlString = [userInfoResponse[indexPath.row - beginIndex] objectForKey:@"image_url"];
        NSURL * imageURL = [NSURL URLWithString:imageUrlString];
        if ( [[NSUserDefaults standardUserDefaults] objectForKey:imageUrlString] == nil ) {
            [[NSUserDefaults standardUserDefaults] setObject:[NSData dataWithContentsOfURL:imageURL] forKey:imageUrlString];
        }
        UIImage * img = [UIImage imageWithData:[[NSUserDefaults standardUserDefaults] objectForKey:imageUrlString]];
        cell.imageView.image = img;
}

在这一行中我添加了

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return 55.0;
}

它可以很好地解决这个小问题(见附图)。我不希望单元格边界线被图像打断。

在此处输入图像描述

我试过玩代码,但没有帮助。有人知道答案吗?请帮忙。谢谢

注意:它适用于 iOS 6,此屏幕截图适用于 iOS 7。它可以是 iOS 7 的新设置UITableView吗?

4

5 回答 5

12

转到您的表视图控制器并将这些代码放入 viewDidLoad:

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) //should check version to prevent force closed
{
    self.tableView.separatorInset = UIEdgeInsetsZero;
}
于 2013-10-07T13:10:06.770 回答
1

如果您不想调整UITableViewCell当时内部cellForRowAtIndexPath使用的高度:

[cell clipsToBounds:YES];
于 2013-10-07T11:09:49.453 回答
1

上面的答案都没有将边框完全延伸到屏幕的整个长度。实现此目的的唯一方法是将以下代码粘贴到您的 ViewController 中:

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
  if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
    [cell setSeparatorInset:UIEdgeInsetsZero];
  }

  if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
    [cell setLayoutMargins:UIEdgeInsetsZero];
  }
}

-(void)viewDidLayoutSubviews {
  if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) {
    [self.tableView setSeparatorInset:UIEdgeInsetsZero];
  }

  if ([self.tableView respondsToSelector:@selector(setLayoutMargins:)]) {
    [self.tableView setLayoutMargins:UIEdgeInsetsZero];
  }
}
于 2015-01-20T16:55:02.443 回答
0

在 viewDidLoad 中:

[self.tableView setSeparatorInset:UIEdgeInsetsMake(0, 0, 0, 0)];
于 2014-06-06T22:29:34.260 回答
0

您的表格视图单元格太小。在您的控制器中实现此方法并调整单元格的高度。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 60.0;
}
于 2013-10-07T10:56:27.080 回答