Приложение iPad TV Guide - PullRequest
       2

Приложение iPad TV Guide

0 голосов
/ 15 ноября 2011

Мне нужно разработать IPad TV Guide , который выглядит Что по телевизору .

Я попытался сделать это, используя UITableView со многими строками в качестве количества каналов. Для того, чтобы создать вид сетки, я добавил подпредставление для каждой строки, содержащей все программы (UIButton с разным размером). Чтобы прокрутить вид по горизонтали, я добавил распознаватель жестов и меняю положение UIView (ячейка подвид) каждый раз, когда проводишь вправо или влево.

Это работает, но решение кажется мне немного грязным, и анимация не так реагирует. У вас есть идея (или пример) для лучшего решения? А как насчет HTML5?

Спасибо

Мой код:

в ViewController.m

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {


   static NSString *CellIdentifier = @"Cell";
   UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

   [cell setSelectionStyle:UITableViewCellSelectionStyleNone];

   _chName = (UILabel *)[cell viewWithTag:4];
   _chName.text=((Channel *)[_resultEPGChannel objectAtIndex:indexPath.row]).name;

   _viewCell = (UIView *)[cell viewWithTag:2];
   _viewCell.frame=CGRectMake(-_positionView, 0,2000, 77);

  //add the view to the _viewCell (moving view) with the right program for each channel (row)
  cp = [[ChannelProgram alloc] init] ;
  cp.allProgram=[_resultEPGProgram objectAtIndex:indexPath.row];

  [_viewCell addSubview:cp];

  return cell;}

В ChannelProgram.m (подкласс UIView)

 - (void)drawRect:(CGRect)rect{

    int xPoint=2;

    for (Program *singleProgram in allProgram) {

        UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

        button.backgroundColor=[UIColor lightGrayColor];

        [button setTitle:singleProgram.title forState:UIControlStateNormal];
        button.frame=CGRectMake(xPoint,0, singleProgram.lengthProgram,75);
        [self addSubview:button];
        xPoint = xPoint+singleProgram.lengthProgram+2;}

Анимация очень медленная и становится худшей каждый раз, когда мне приходится перезагружать стол. Что не так?

1 Ответ

0 голосов
/ 04 декабря 2011

Событие drawRect является собственной ничьей, каждый раз, когда вы перерисовываете, вы создаете новую UIButton, так что вы можете получить намного больше UIButton, чем вам нужно.

UIButton - это элемент управления, вы можете просто добавить его в ChannelProgram в - (id)initWithFrame:(CGRect)frame или - (id)initWithCoder:(NSCoder *)aDecoder, это не приведет к потере памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...