首先,我是新手,我很可能会忘记一些非常简单的事情。
问题:
我正在制作一个应用程序,在tableView
中显示来自imgur.com的随机图像。由于某些原因,所有单元格都缩进了一小部分,如下图所示。我已经在storyboard
中摆弄了许多设置并且没有解决问题的运气。
这是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
和单元格设置的图片......
答案 0 :(得分:6)
为了摆脱缩进,您将分隔符insets设置为零。结果如下图所示。
代码
myTableView.separatorInset = UIEdgeInsetsZero
在Interface Builder中
备注强>
如果单元格导致缩进,则可以将以下行添加到tableView:cellForRowAtIndexPath
:
cell.separatorInset = UIEdgeInsetsZero
cell.preservesSuperviewLayoutMargins = false
cell.layoutMargins = UIEdgeInsetsZero
如果您仍然支持iOS 8之前的版本,请参阅this answer了解详情。
答案 1 :(得分:5)
调整分隔符插入应解决此问题。我相信左边的默认值为15px
。
答案 2 :(得分:1)
如果你指的是水平缩进,那么你应该尝试以下方法:
确保内容视图框架x origin位于0:
yourTableViewCell.contentView.frame = CGRectMake(0.0f, 0.0f, SOME_WIDTH, SOME_HEIGHT);
您应该确保添加到UITableViewCell
的图片视图与其父级左边缘对齐。如果您使用autolayout而不是在界面构建器中使用autolayout。否则:
yourImageView.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleHeight;
在缩放图像时看到它仍然适用于视图框:
yourImageView.contentMode = UIViewContentModeScaleAspectFill;
确保单元格有0缩进:
yourTableViewCell.indentationLevel = 0;
如果这些都没有帮助,请设置断点并使用以下调试器命令之一检查单元的子视图:
po [[UIWindow keyWindow] recursiveDescription]
po [yourTableViewCell recursiveDescription]
答案 3 :(得分:0)
以上都不适合我,我找到了:
您需要做两件事。首先,将这两行代码添加到您的 表格视图控制器的viewDidLoad()方法:
tableView.layoutMargins = UIEdgeInsets.zero tableView.separatorInset = UIEdgeInsets.zero
现在寻找您的cellForRowAt方法并添加以下内容:
cell.layoutMargins = UIEdgeInsets.zero