因此我的UITableView
有一个标题,显示为UIImageView
,并在图片下方显示评论。我试图增加图像和评论表之间的空间。
(我已尝试增加标题的高度,但在我的情况下它不起作用,因为它会导致更大的UIImageView
并且图像将无法完全覆盖视图)
我试验了这个黑客:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"CommentsTableCell";
CommentsCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
Comment *comment = [self.comments objectAtIndex:indexPath.row];
[cell setUsername:comment.handle andText:comment.text];
/* Dirty hack:
1. We cannot increase the height of the header because that will leave spaces in the image.
2. The only way we can increase the margin from the comments table to the picture is by
increasing the individual inset of the first and last comments cell
*/
if (indexPath.row == 0) {
[cell setContentInset:UIEdgeInsetsMake(COMMENTS_PADDING * 10 , 0, 0, 0)];
} else if (indexPath.row == [self.comments count] - 1) {
[cell setContentInset:UIEdgeInsetsMake(0, 0, COMMENTS_PADDING * 10 , 0)];
}
return cell;
}
和我的 CommentsCell.m :
- (void)awakeFromNib {
self.commentText.scrollEnabled = false;
self.commentText.editable = false;
self.commentText.contentInset = UIEdgeInsetsMake(-1 * COMMENTS_PADDING, 0, 0, 0);
}
- (void)setUsername:(NSString *)username andText:(NSString *)text {
[self.commentText setAttributedText:[CommentsCell getContentStringForUsername:username andText:text]];
}
- (void)setContentInset:(UIEdgeInsets)inset {
self.commentText.contentInset = inset;
}
但第一条评论仍然有相同的插图。我检查了调试器,awakeFromNib正在之前发生 cellForRowAtIndexPath
。你知道为什么我的方法不起作用吗?
我也对其他建议持开放态度。
答案 0 :(得分:2)
您应该可以在显示的图像正下方的标题视图中添加一些空格。不是将表的标题视图设置为UIImageView,为什么不创建一个容器视图,您可以将图像视图添加到其中,然后在其下方留出一些空间。
- (UIView *) buildTableHeaderView {
UIImage *image = [UIImage imageNamed: @"my_image.png"];
CGFloat height = image.size.height + 20;
UIImageView *imageView = [[UIImageView alloc] initWithFrame: CGRectMake(0, 0, self.myTableView.frame.size.width, height)];
[imageView setImage: image];
UIView *headerView = [[UIView alloc] initWithFrame: CGRectMake(0, 0, self.myTableView.bounds.size.width, height)];
[headerView addSubview: imageView];
return headerView;
}
答案 1 :(得分:1)
您可以做的是创建一个自定义UIView(如果您想要更简单的UI设计,使用.xib),底部有一个空格,并从- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
的{{1}}方法返回它,也可以不要通过实现相同UITableViewDelegate
的{{1}}方法来返回标题视图的高度。
这是一个简短的例子:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
如果您有一个标题视图,那么您应该使用相同的自定义标题视图创建/初始化/设置,但是在超级视图中向下移动您的表,并在您喜欢的任何位置添加自定义标题视图。