IOS: Как я могу оживить изменение в indentationLevel? - PullRequest
2 голосов
/ 02 ноября 2011

У меня есть UITableView, где некоторые строки имеют отступ с использованием indentationLevel. Ячейки имеют стиль UITableViewCellStyleValue1, поэтому я получаю текстовый ярлык с отступом, но не detailTextLabel. Иногда я хочу изменить отступ строки, чтобы текст двигался влево или вправо. Настройка indentationLevel работает, но текст внезапно скачет: как я могу плавно анимировать его?

Ответы [ 2 ]

1 голос
/ 03 ноября 2011

Это работает - изменение отступа с помощью indentDelta:

CGRect frame = cell.textLabel.frame;
frame.origin.x += indentDelta * cell.indentationWidth;
[UIView animateWithDuration:0.5f animations:^{
    cell.textLabel.frame = frame;
} completion:^(BOOL finished){
    cell.indentationLevel = cell.indentationLevel + indentDelta;
}];

Сначала метки плавно прокручиваются до того места, где я хочу, затем строки перерисовываются с правильным усечением и оставляются с правильным отступом indentationLevel, поэтому они рисуютправильно, если они регенерированы, например, если нажать, чтобы выбрать.

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

Поскольку UITableViewCell является подклассом UIView, вы можете попробовать использовать методы анимации UIView .

[UIView animateWithDuration:0.5f animations:^{
    cell.indentationLevel = 2;
}];

Если это не сработает, возможно, вам придется настроить поле origin.x кадра представления внутри блока анимации.

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