【发布时间】:2016-10-26 11:12:00
【问题描述】:
更新:
- 我有一个从 Web 服务加载数据的 UITableView。
- 在它加载数据时,我将它的 backgroundView 设置为 UIAnyCustomView(UIView 的子类),我以编程方式对其进行绘制并为其设置动画。
- 收到来自网络服务的数据后,我将 UITableView 的 backgroundView 设置为 nil,因为它是可选的,我认为应该自动删除动画,但事实并非如此。
我的问题:为什么?
原始问题(为澄清而更新)
我收到了一些关于我的某个应用的电池使用情况反馈。我使用 xCode 仪器监控电池使用情况并发现了问题。我正在静态设置 UITableView/UICollectionView 的 backgroundView,它永远调用动画(我们称之为 UICustomeActivityIndicator):
fileprivate func rotateLoadingView() {
UIView.animate(withDuration: 0.5, delay: 0.0, options: [.curveLinear], animations: {
self.innerCircleView.transform = self.innerCircleView.transform.rotated(by: CGFloat(M_PI_2))
}) { result in
if !self.isHidden {
self.rotateLoadingView()
}
}
}
然后,当内容被加载时,我通过将其设置为 nil 来清除 backgroundView:
// collectionView.backgroundView = nil
tableView.backgroundView = nil
但即使我正在清除 backgroundView,动画仍在继续,并且正在消耗大量电池(在将应用程序发送到后台时也是如此)。
我的问题;这种行为是正常的还是backgroundView UITableView/UICollectionView的bug,设置为nil时应该自动清除?
【问题讨论】:
-
你在控制器的任何地方都在做
activityIndicator.hidden = true吗?为什么你认为将backgroundView设置为nil 会影响activityView? -
是的,我确实设置了 activityIndicator.hidden = true。当我将 backgroundView 设置为 nil 时,为什么它不影响 activityView?系统应该自动删除它的动画,对吧?
标签: ios swift uitableview uicollectionview uiviewanimation