如何删除UITableView中的缩进?

时间:2014-04-06 06:36:17

标签: ios iphone objective-c uitableview

首先,我是新手,我很可能会忘记一些非常简单的事情。

问题:

我正在制作一个应用程序,在tableView中显示来自imgur.com的随机图像。由于某些原因,所有单元格都缩进了一小部分,如下图所示。我已经在storyboard中摆弄了许多设置并且没有解决问题的运气。

notice indent on left side of images

这是tableView代码......

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// Return the number of sections.
return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
return (_images.count * 2);
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = nil;

if (indexPath.row % 2 == 0) {
//content cell
    cell = [tableView dequeueReusableCellWithIdentifier:@"RandomImgurTableCell"];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                       reuseIdentifier:@"RandomImgurTableCell"];
    }

    long row = [indexPath row] / 2;

    SDImageCache* myCache = [SDImageCache sharedImageCache];
    cell.imageView.image = [myCache imageFromDiskCacheForKey:_images[row]];

}
else if (indexPath.row % 2 == 1) {
//separator cell
    cell = [tableView dequeueReusableCellWithIdentifier:@"SeparatorCell"];

    if(cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                  reuseIdentifier:@"SeparatorCell"];
    }
}
if (indexPath.row == (_images.count * 2) - 3) {
    [self checkToLoadMoreImages];
    NSLog(@"Hit bottom of table, getting more images");
}
return cell;
}

以下是我的tableView和单元格设置的图片......

enter image description here enter image description here

4 个答案:

答案 0 :(得分:6)

为了摆脱缩进,您将分隔符insets设置为零。结果如下图所示。

enter image description here

代码

myTableView.separatorInset = UIEdgeInsetsZero

在Interface Builder中

enter image description here

备注

如果单元格导致缩进,则可以将以下行添加到tableView:cellForRowAtIndexPath

cell.separatorInset = UIEdgeInsetsZero
cell.preservesSuperviewLayoutMargins = false
cell.layoutMargins = UIEdgeInsetsZero

如果您仍然支持iOS 8之前的版本,请参阅this answer了解详情。

答案 1 :(得分:5)

调整分隔符插入应解决此问题。我相信左边的默认值为15px

答案 2 :(得分:1)

如果你指的是水平缩进,那么你应该尝试以下方法:

  1. 确保内容视图框架x origin位于0:

    yourTableViewCell.contentView.frame = CGRectMake(0.0f, 0.0f, SOME_WIDTH, SOME_HEIGHT);

  2. 您应该确保添加到UITableViewCell的图片视图与其父级左边缘对齐。如果您使用autolayout而不是在界面构建器中使用autolayout。否则:

    yourImageView.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleHeight;

  3. 在缩放图像时看到它仍然适用于视图框:

    yourImageView.contentMode = UIViewContentModeScaleAspectFill;

  4. 确保单元格有0缩进:

    yourTableViewCell.indentationLevel = 0;

  5. 如果这些都没有帮助,请设置断点并使用以下调试器命令之一检查单元的子视图:

    po [[UIWindow keyWindow] recursiveDescription]
    po [yourTableViewCell recursiveDescription]
    

答案 3 :(得分:0)

以上都不适合我,我找到了:

https://www.hackingwithswift.com/example-code/uikit/how-to-make-uitableviewcell-separators-go-edge-to-edge

  

您需要做两件事。首先,将这两行代码添加到您的   表格视图控制器的viewDidLoad()方法:

tableView.layoutMargins = UIEdgeInsets.zero 
tableView.separatorInset = UIEdgeInsets.zero
     

现在寻找您的cellForRowAt方法并添加以下内容:

cell.layoutMargins = UIEdgeInsets.zero