Ответ 1
Здесь есть проект, который может быть полезен, http://github.com/TheVole/HorizontalTable
Обычно 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....... Как я могу это сделать? спасибо.
Здесь есть проект, который может быть полезен, http://github.com/TheVole/HorizontalTable
Используйте UIViewController с UIView, добавьте 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);
...
EasyTableView может выполнять горизонтальные таблицы
если вы хотите использовать 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 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;
}
Я не думаю, что есть доступный элемент управления, который позволит вам это сделать. Лучше всего бросить свой собственный.
В двух словах вам понадобится подкласс UIScrollView, который позволит вам иметь больше ячеек, чем у вас есть место на экране. Он также будет разбирать все ваше поведение.
В этом прокрутке вы хотите поместить набор ячеек - я бы подклассифицировал UIView, а не пытаюсь заставить UITableViewCell играть хорошо с вашим просмотром прокрутки для них.
Это простой пример того, как подойти к проблеме. Сколько функций UITableView вы надеетесь реплицировать?
Помимо подкласса UIScrollView, вы можете попробовать применить поворот на 90 градусов к существующему UITableView. Я понятия не имею, как это повлияет на прокрутку, и вам придется специализировать представления ячеек для "unrotate".
Я думаю, что подкласс UIScrollView - лучший вариант. Используйте класс UITableView в качестве ориентира, когда дело доходит до делегата, dataSource и повторно используемых ячеек.
У вас есть стандартная таблица, отображаемая в портретной ориентации, но вы держите телефон в альбомном режиме. Поверните содержимое каждой ячейки на 90 градусов и там. И не забудьте игнорировать уведомления об изменении ориентации.
Не слишком сложно создать нечто похожее на UITableView в коде самостоятельно. Если вы можете найти его, сеанс Scroll Views на уровне эксперта из WWDC09 содержит несколько удивительных примеров кода.
Я рекомендую EasyTableView и PSTCollectionView, они представляют собой отличный горизонтальный планшетный проект на github, который много смотрится.