Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何在UITableView中设置UIButton的动画?_Iphone_Objective C_Uitableview_Uibutton - Fatal编程技术网

Iphone 如何在UITableView中设置UIButton的动画?

Iphone 如何在UITableView中设置UIButton的动画?,iphone,objective-c,uitableview,uibutton,Iphone,Objective C,Uitableview,Uibutton,我目前有一个UITableView,每个单元格包含四个uibutton。我正在为每个按钮放置一个图像,其中包含从网上下载的图片。我想让按钮在图像下载完成后淡入。我知道我可以在viewDidLoad中设置动画,但我会在cellforrowatinex函数中指定图像。当我用图像更新UIButton时,如何在以后的某个时间点上仅设置UIButton的动画?您可能应该为UIButton指定一个标记,甚至可以定义一个整数标记,以便在有四个按钮时易于阅读 #define CELL_BUTTON_ONE 99

我目前有一个
UITableView
,每个单元格包含四个uibutton。我正在为每个按钮放置一个图像,其中包含从网上下载的图片。我想让按钮在图像下载完成后淡入。我知道我可以在
viewDidLoad
中设置动画,但我会在
cellforrowatinex
函数中指定图像。当我用图像更新
UIButton
时,如何在以后的某个时间点上仅设置
UIButton
的动画?

您可能应该为UIButton指定一个标记,甚至可以定义一个整数标记,以便在有四个按钮时易于阅读

#define CELL_BUTTON_ONE 9999
生成第一个按钮时,请指定此标记:

[myButton setTag:CELL_BUTTON_ONE];
[cell addSubView:myButton];
因为我不知道你在哪里或者如何加载图像,所以说你应该做什么有点困难。这样做的目的是获得对UITableViewCell的引用,该单元格拥有要用图像替换的按钮。现在,您可以到任何有单元格引用的地方:

UIButton *buttonOne = [cell viewWithTag:CELL_BUTTON_ONE];
[button setImage:loadedImage];

您可能应该为UIButton分配一个标记,甚至可以定义一个整数标记,以便在有四个按钮时易于阅读

#define CELL_BUTTON_ONE 9999
生成第一个按钮时,请指定此标记:

[myButton setTag:CELL_BUTTON_ONE];
[cell addSubView:myButton];
因为我不知道你在哪里或者如何加载图像,所以说你应该做什么有点困难。这样做的目的是获得对UITableViewCell的引用,该单元格拥有要用图像替换的按钮。现在,您可以到任何有单元格引用的地方:

UIButton *buttonOne = [cell viewWithTag:CELL_BUTTON_ONE];
[button setImage:loadedImage];

在CellForRowatineXpath中执行此操作。图像下载完成后,将在表视图上调用-reloadData。您可以为单元格中的每个UIButton创建插座,也可以为它们分配一个标记。在IB中将其alpha设置为0.0。然后,当调用-cellforrowatinedexpath时,如果该行/按钮的图像可用,则将其设置为图像,然后在UIView动画块中调用-setAlpha:1.0。比如:

- (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的alpha值。因此,如果当前单元格中的button1的alpha已设置为1.0,则不希望再次对其设置动画,但希望对尚未设置的任何其他按钮的alpha设置动画。这种图像可见性状态是您必须跟踪的。这并不是很难做到,但不仅仅是设置alpha。如果您需要澄清,请告诉我。

在-cellforrowatinexpath中进行。图像下载完成后,将在表视图上调用-reloadData。您可以为单元格中的每个UIButton创建插座,也可以为它们分配一个标记。在IB中将其alpha设置为0.0。然后,当调用-cellforrowatinedexpath时,如果该行/按钮的图像可用,则将其设置为图像,然后在UIView动画块中调用-setAlpha:1.0。比如:

- (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的alpha值。因此,如果当前单元格中的button1的alpha已设置为1.0,则不希望再次对其设置动画,但希望对尚未设置的任何其他按钮的alpha设置动画。这种图像可见性状态是您必须跟踪的。这并不是很难做到,但不仅仅是设置alpha。如果您需要澄清,请告诉我。

+1这样做是正确的。但是,它不应该是[cell.contentView addSubview:myButton]吗?我认为是[buttonOne setImage:LoadeImage forState:xxxxx]我认为你是对的David:)我通常做自定义单元格,所以我不使用不同的单元格视图。但是,它不应该是[cell.contentView addSubview:myButton]吗?我认为是[buttonOne setImage:LoadeImage forState:xxxxx]我认为你是对的David:)我通常做自定义单元格,所以我不使用不同的单元格视图。