【问题标题】:What is the best way to do a page like the album page of iTunes?做一个像 iTunes 专辑页面这样的页面的最佳方法是什么?
【发布时间】:2013-11-25 06:06:04
【问题描述】:

我正在尝试使用 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的专辑页面中,有一个分段控件(见图)。当我按下其他部分时,说“review”,上半部分仍然存在,而整个下半部分已更改。

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

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

请指教。谢谢。

【问题讨论】:

  • 在我看来,带有图像的最顶层视图是表头视图(其中有一个水平滚动的滚动视图或者可能是一个集合视图)。分段控件似乎位于部分标题中,因为当您滚动时它会粘在屏幕顶部。当您单击其中一个按钮时,您只需更改表格视图显示的内容。

标签: ios iphone objective-c xcode uitableview


【解决方案1】:

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

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

【讨论】:

  • 感谢您告诉我正确的方向。如果您还可以提供一些关于“查看”表格视图的链接/示例代码,我将不胜感激,因为除了将 uitableviewcontroller 拖出并“回答”所需的协议功能之外,我不知道如何构建表格。
  • 你又在正确的轨道上!第一步是拖动一个 UITableViewController 并响应数据源和委托方法。下一步叫做viewContainment,这个stackoverflow线程里面有丰富的信息stackoverflow.com/questions/8379759/…
【解决方案2】:

您可以通过两种方式删除此空白, 在 ios 7 中在 UITableView 中设置 separatorInset

1) 由务实设定

table.separatorInset=UIEdgeInsetsZero;

2) 或者你可以这样做

【讨论】:

  • 感谢您的建议。对于那些将阅读这篇文章的人,如果您只想关闭第一行的“间隙”(在我的情况下),请改用 cell.separatorInset = UIEdgeInsetsZero。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    • 2012-04-23
    • 1970-01-01
    • 2015-09-10
    • 2015-10-02
    相关资源
    最近更新 更多