Я создаю горизонтальный вид таблицы, как устройство чтения новостей Pulse. Я нашел несколько примеров в сети и они работают, но мне интересно, когда нам нужно установить свойство view.frame после преобразования.
Приведенные мной примеры сбрасывают кадр горизонтального табличного представления в ячейке вертикального табличного представления после поворота на 90 градусов
self.tableViewCell.horizontalTableView.transform = rotateTable;
self.tableViewCell.horizontalTableView.frame = CGRectMake(0, 0, self.tableViewCell.horizontalTableView.frame.size.width, self.tableViewCell.horizontalTableView.frame.size.height);
Больше контекста:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
TableViewCell *cell = (TableViewCell*)[self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
[[NSBundle mainBundle] loadNibNamed:@"TableViewCell" owner:self options:nil];
CGAffineTransform rotateTable = CGAffineTransformMakeRotation(-M_PI_2);
self.tableViewCell.horizontalTableView.transform = rotateTable;
self.tableViewCell.horizontalTableView.frame = CGRectMake(0, 0, self.tableViewCell.horizontalTableView.frame.size.width, self.tableViewCell.horizontalTableView.frame.size.height);
self.tableViewCell.contentArray = [self.arrays objectAtIndex:indexPath.section];
self.tableViewCell.horizontalTableView.allowsSelection = YES;
cell = self.tableViewCell;
self.tableViewCell = nil;
}
cell.selectionStyle = UITableViewCellSelectionStyleNone;
return cell;
}
Но не переустанавливать кадр ячейки горизонтальной таблицы после преобразования (поворота) ячейки:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [self.horizontalTableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
[[NSBundle mainBundle] loadNibNamed:@"GameTableViewCell" owner:self options:nil];
cell = self.gameTableCell;
self.gameTableCell = nil;
}
CGAffineTransform rotateImage = CGAffineTransformMakeRotation(M_PI_2);
cell.transform = rotateImage;
return cell;
}
Я попытался сбросить кадр ячейки, и это не повлияло на вывод, даже если я поставил
cell.frame = CGMakeRect(200, 200, cell.frame.size.height, cell.frame.size.width)
Что должно было переместить ячейку вокруг представления таблицы, нет?
Если я не сбрасываю кадр self.tableViewCell.horizontalTableView.frame
, горизонтальный стол поворачивается, но в неправильном месте.
Почему после поворота необходимо сбросить кадр горизонтального табличного представления, а не отдельные ячейки (которые также вращаются)?
Спасибо!
// иллюстрация от iPortable
