Изменение ширины ячейки

Требования к операционной системе: iOS 5.0 и выше.

Мобильное устройство: iPad.

Описание

В данном примере реализовано изменение ширины выбранной ячейки таблицы, а также вывод в консоль среды разработки размера области изменения ширины ячейки. Также изменяются цветовые настройки элемента изменения размера и картинка маркеров изменения размера.

Исходный код

Для выполнения примера необходимо разместить взамен метода executeExample класса ViewController (см. раздел «Создание простой электронной таблицы») следующий код:

-(void) executeExample{
    // Устанавливаем цвет элемента изменения размера
    [contr setResizerColor:[UIColor redColor]];
    // Устанавливаем цвет границы элемента изменения размера
    [contr setResizerBorderColor:[UIColor greenColor]];
    // Устанавливаем новую картинку маркеров элемента изменения размера
    [contr setResizerHandleImage:[UIImage imageNamed:@"circle.png"]];
    // Создаем элемент изменения размера для таблицы
    NuGridResizer *resizer = [NuGridResizer resizerForGridView:[contr gridView]];
    // Инициализируем элемент изменения размера
    [resizer initWithGrid: [contr gridView]];
    // Изменяем размеры горизонтальной области, используемой для изменения размера
    CGSize size = CGSizeMake(90, 90);
    [resizer setLeftRightSelectionTouchAreaSize:size];
    [contr setLeftRightSelectionTouchAreaSize:size];
    // Устанавливаем элемент изменения размера
    [[contr gridView] setValue:resizer forKey:@"m_resizer"];
    // Устанавливаем начальный размер ширины изменяемой ячейки
    colWidth = 80;
};
 // Обрабатываем событие нажатия на ячейку таблицы
 - (void)gridView:(NuGridView *)gridView wasTouchedInCell:(NuGridCell *)cell {
     // Начинаем изменять ширину ячейки
     [gridView addSubview:[gridView resizer]];
     [[gridView resizer] resizeWidthForCell: cell];
 }
// Обрабатываем событие изменения ширины ячейки
- (void)gridView:(NuGridView *)gridView widthChangeNeeded:(double)newWidth forCell:(NuGridCell *)cell
{
    // Завершаем изменение ячейки, если ее ширина превысила 400 пикселей
    if(newWidth > 400)
    {
        [[gridView resizer] finish];
    }
    // Сохраняем значение ширины ячейки
    colWidth = newWidth;
    // Растягиваем область изменения размера после того, как она была изменена
    [[gridView resizer] stretchAfterChanging];
    // Выводим размеры области изменения размера
    NSInteger frameWidth = [[gridView resizer] originFrame].size.width;
    NSInteger frameHeight = [[gridView resizer] originFrame].size.height;
    NSLog(@"%@ (%d, %d)", @"Размеры области изменения размера:", frameWidth, frameHeight);
}

Также необходимо разместить взамен метода widthForColumn класса ViewController следующий код:

// Задаем ширину столбца
- (double)gridView:(NuGridView *)gridView widthForColumn:(NSInteger)columnNumber
{
    if(columnNumber == 2)
    {
        return colWidth;
    }
    else
    {
        return 80;
    }
}

Нажмем на любую ячейку таблицы, которая находится в столбце с номером 2, после чего изменим её ширину, потянув за маркер.

В результате ширина выбранной ячейки была изменена:

Также при каждом изменении размера в консоль среды разработки было выведено значение размеров области изменения ширины ячейки:

Размеры области изменения размера: (127, 283)

См. также:

Примеры использования компонентов