如何在iPhone上制作水平UI表格视图?

时间:2010-05-14 14:22:24

标签: objective-c iphone uitableview

通常,UITableView是这样的:

[   cell    1   ]
[   cell    2   ]
[   cell    3   ]
[   cell    4   ]

但我想制作我自己的UITableView:

   |    |   |   |
   | c  | c | c |
   | e  | e | e |
   | l  | l | l |
   | l  | l | l |
   |    |   |   |
   | 1  | 2 | 3 |
   |    |   |   |

我希望用户向左和向右滑动以获得与原始UITableView类似的行为....我该怎么做?谢谢。

9 个答案:

答案 0 :(得分:22)

使用带有UIView的UIViewController,将表的UITableView添加到控制器视图,然后在代码方面只有一行:

- (void)viewDidLoad
{

    [super viewDidLoad];

    // horizontal table
    // -90 degrees rotation will move top of your tableview to the left
    myTableView.transform = CGAffineTransformMakeRotation(-M_PI_2);
    //Just so your table is not at a random place in your view
    myTableView.frame = CGRectMake(0,0, myTableView.frame.size.width, myTableView.frame.size.height);
...

答案 1 :(得分:13)

这里有一个项目可能也有用,http://github.com/TheVole/HorizontalTable

答案 2 :(得分:4)

EasyTableView可以执行水平表

答案 3 :(得分:2)

如果你想使用textLabel,可以使用:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                      reuseIdentifier:CellIdentifier];
    }


    cell.textLabel.frame = CGRectMake(0,0, cell.frame.size.width , cell.frame.size.width); // it's very important!!!You must set frame of textLabel, because you can have a problems with displaying you table;

    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    CGAffineTransform trans = CGAffineTransformRotate(CGAffineTransformIdentity, M_PI_2);
    cell.textLabel.transform = trans;  // rotating you caption;
    cell.textLabel.text = @"tra-tata";
    cell.textLabel.textAlignment = UITextAlignmentCenter;

    return cell;
}

答案 4 :(得分:1)

我认为没有可用的控件可以让你这样做。你最好的选择就是自己动手。

简而言之,您将希望子类化UIScrollView,这将允许您拥有比屏幕上有空间更多的单元格。它还将整理所有滑动行为。

在这个滚动视图中你想要放置一组单元格 - 我是UIView的子类,而不是试图强迫UITableViewCell与你的Scroll View一起玩。

这只是如何解决问题的一个简单示例。您希望复制UITableView有多少功能?

答案 5 :(得分:0)

除了子类化UIScrollView之外,您可以尝试对现有的UITableView应用90度旋转。但是,我不知道这会如何影响滚动,你必须将单元格视图专门化为“unrotate”。

我认为继承UIScrollView是一个更好的选择。在委托,dataSource和可重用单元格中使用UITableView类作为指导。

答案 6 :(得分:0)

您所拥有的只是一个纵向显示的标准表格,但您手持横向模式。将每个单元格的内容旋转90度并在那里。并且一定要忽略任何方向更改通知。

答案 7 :(得分:0)

在您自己的代码中构建类似于UITableView的东西并不是非常困难。如果你能找到它,WWDC09的专家级Scroll Views会话就有了一些很棒的示例代码。

答案 8 :(得分:0)

我推荐EasyTableViewPSTCollectionView,它们是github上很棒的横向tableview项目,很多都是盯着看。