像iTunes的专辑页面那样做页面的最佳方法是什么?

时间:2013-11-25 06:06:05

标签: ios iphone objective-c xcode uitableview

我正在尝试使用 uitableviewcontroller 模仿iTunes的相册页面,但后来我想我可能走错了方向。

我的计划是在 tableView: cellForRowAtIndexPath: 中执行某些操作。当 indexPath.row == 0 时,我会对相册(即上半部分)进行描述,否则我会对歌曲进行描述(即下部)。

这是我的代码:

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (!cell){
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}

if (indexPath.row == 0 ){
    CGRect imageFrame = CGRectMake(5, 5, 69, 69);

    UIImageView *coverFram = [[UIImageView alloc] initWithFrame:imageFrame];
    NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"cover" ofType:@"jpg"];
    coverFram.image = [[UIImage alloc] initWithContentsOfFile:imagePath];

    [cell.contentView addSubview:coverFram];
}else{
    NSInteger adjustedIndexPathRow = indexPath.row - 1;

    cell.textLabel.text = [self.cellRow objectAtIndex:adjustedIndexPathRow];
}

return cell;
} 

有两个地方我没有简单的想法来实现它:

首先,在iTunes的专辑页面中,有一个分段控件(见图)。当我按下其他部分,说“评论”时,上部保持在那里,而整个下部已经改变。

其次,我不知道如何关闭图像中的间隙显示(红色圆圈)。

所以,我认为可能还有一些其他更聪明(或更简单)的方法。比如,是否可以将页面分成两部分:然后通过视图执行上部;并通过表格视图执行下半部分? (只是我的猜测)

请指教。谢谢。

enter image description here

3 个答案:

答案 0 :(得分:2)

你的假设是完全正确的。这是你的情况。请参阅下图。

enter image description here

构建包含专辑封面的视图的顶部,它的详细信息和分段控件。视图的底部将保留用于通过基于所选段实例化其他视图控制器来加载的视图。

答案 1 :(得分:1)

您可以通过双向移除此空白区域,  在ios 7中,在UITableView中设置了separatorInset

1)由Pragmatically设置

table.separatorInset=UIEdgeInsetsZero;

2)或者你可以这样做

Screen Shot

答案 2 :(得分:1)

你的猜测是正确的。更简单的方法(可能是正确的方法)是将整个视图分成两部分。上部由图像视图组成,分段控制其他任何内容。和底部可以有一个表视图。现在,根据分段控件中段的选择,您可以轻松地使用适当的内容重新加载表视图