Как мне анимировать UIButton в UITableView? - PullRequest
1 голос
/ 15 июня 2010

В настоящее время у меня есть UITableView с каждой ячейкой, содержащей четыре кнопки UIB.Я размещаю изображение для каждой кнопки с загруженной картинкой из онлайн.Мне бы хотелось, чтобы кнопка исчезла, когда изображение будет загружено.Я знаю, что могу анимировать в viewDidLoad, но я назначаю изображение в функции cellForRowAtIndex.Как мне анимировать UIButton в более поздний момент времени, когда я обновляю UIButton изображением?

Ответы [ 2 ]

1 голос
/ 15 июня 2010

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

#define CELL_BUTTON_ONE 9999

При создании первой кнопки назначьте этот тег:1004 *

[myButton setTag:CELL_BUTTON_ONE];
[cell addSubView:myButton];

Поскольку я не знаю, куда и как вы загружаете изображения, сказать, что вы должны делать, довольно сложно.Идея в том, что вы получаете ссылку на UITableViewCell, которому принадлежит кнопка, которую вы хотите заменить изображением.Везде, где у вас есть ссылка на ячейку, вы можете перейти:

UIButton *buttonOne = [cell viewWithTag:CELL_BUTTON_ONE];
[button setImage:loadedImage];
0 голосов
/ 15 июня 2010

Сделайте это в -cellForRowAtIndexPath. Когда загрузка вашего изображения закончится, вы вызовете -reloadData в вашем табличном представлении. Вы можете создать розетки для каждой кнопки UIB в своей ячейке или просто назначить им тег. Установите их альфа на 0,0 в IB. Затем, когда вызывается -cellForRowAtIndexPath, если изображение для этой строки / кнопки доступно, установите его изображение и затем вызовите -setAlpha: 1.0 в блоке анимации UIView. Что-то вроде:

- (UITableViewCell*)tableView:(UITableView*)tv 
        cellForRowAtIndexPath:(NSIndexPath*)indexPath
{
    // get a reference to your cell...

    // get reference to the UIButton in the cell
    UIButton *button = [cell viewWithTag:tagForButton];

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.75];
    [button setAlpha:1.0f];
    [UIView commitAnimations];
}

Единственная проблема, о которой я могу подумать, это то, что вам нужно будет отслеживать альфа-значение для заданного indexPath на основе ваших данных из-за повторного использования ячейки. Поэтому, если в вашей кнопке button1 в текущей ячейке уже установлена ​​альфа-версия 1.0, вы не захотите снова анимировать ее, но вы захотите анимировать альфа-канал любой другой кнопки, которая еще не установлена. Это состояние видимости изображения вы должны отслеживать. Это не сложно сделать, но есть нечто большее, чем просто настройка альфы. Дайте мне знать, если вам нужны разъяснения.

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