我有一个自定义的UITableViewCell类,其中有一个UIImageView。仅当UITableViewCell的文本等于某个字符串(例如“Home”)时,才会显示此UIImageView。当调用方法mapView:regionWillChangeAnimated:时,我想在这个UIImageView上应用动画。
我的问题是,当mapView:regionWillChangeAnimated:被调用时,如何通过我的UITableView和自定义UITableViewCells,并在UIImageView设置为可见的单元格内的UIImageView上执行动画?
在使用UITableView委托方法之前,我已经能够在单元格上调用方法,但是我很难在这种情况下找到解决方案,因为UITableView没有被地图平移方法直接调用,它不是didSelectRowAtIndex路径问题?
谢谢。
答案 0 :(得分:0)
如果您在地图委托方法中引用了表视图,则可以使用UITableView中的visibleCells方法获取所有可见单元格,并在需要时为它们应用动画。一般结构可能如下:
// Controller
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated {
...
[self applyCellsAnimation];
}
- (void)applyCellsAnimation {
for (CustomCell* cell in [self.tableView visibleCells]) {
[cell performImageAnimationIfNeeded];
}
}
// CustomCell
- (void)performImageAnimationIfNeeded {
if (!self.myImageView.hidden) {
// perform animation
}
}
答案 1 :(得分:0)
您可以使用表格视图中的所有可见行的数组 [myTableView visibleCells]
然后,您只需要通过每个单元格进行集成并为图像设置动画。 即。
for (MyCustomCell* cell in [myTableView visibleCells])
{
[cell animateImage];
}
然后animateImage的实现可以随心所欲 - 只需检查imageView.hidden属性,并在imageView可见时为其设置动画。