如何在編程式更新表格時顯示UIRefreshControl? 使用[self.refreshControl beginRefreshing]使旋轉器變成動畫,但不會顯示它。如何以編程方式向下滑動UITableView以顯示底層UIRefreshControl
22
A
回答
20
您必須親自手動更改您的UITableView
的contentOffset
。一定要考慮到contentInset.top
。它應該是簡單的東西如:
CGPoint newOffset = CGPointMake(0, -[myTableView contentInset].top);
[myTableView setContentOffset:newOffset animated:YES];
17
這將這樣的伎倆
- (void)beginRefreshingTableView {
[self.refreshControl beginRefreshing];
// check if contentOffset is zero
if (fabsf(self.tableView.contentOffset.y) < FLT_EPSILON) {
[UIView animateWithDuration:0.25 delay:0 options:UIViewAnimationOptionBeginFromCurrentState animations:^(void){
self.tableView.contentOffset = CGPointMake(0, -self.refreshControl.frame.size.height);
} completion:^(BOOL finished){
}];
}
}
+1
顯然,您需要在tableview動畫的完成塊內或調用動畫之後調用'beginRefreshing',否則將忽略由您設置的refreshControl的tintColor。 http://stackoverflow.com/a/20383030/903544 –
8
對於斯威夫特3,這是我根據彼得Lapisu的回答是:
override func viewDidLoad() {
super.viewDidLoad()
self.refreshControl?.addTarget(self, action: #selector(refresh), forControlEvents: UIControlEvents.ValueChanged)
// ...
}
func refresh(sender:AnyObject) {
self.refreshControl?.beginRefreshing()
if let yOffsetTable = self.tableView?.contentOffset.y {
if yOffsetTable < CGFloat(Float.ulpOfOne) {
UIView.animate(withDuration: 0.25, delay: 0, options: UIViewAnimationOptions.beginFromCurrentState, animations: {
if let refreshControlHeight = self.refreshControl?.frame.height {
self.tableView?.contentOffset = CGPoint(x: 0, y: -refreshControlHeight)
}
}, completion: nil)
}
}
}
相關問題
- 1. 如何以編程方式顯示UITableView?
- 2. 在UITableView中的UITableViewCell上滑動後,如何以編程方式關閉滑動?
- 3. 以編程方式向UIViewController添加UITableView
- 4. 如何在Objective-C中以編程方式隱藏/顯示UITableView?
- 5. 如何以編程方式聲明並顯示我的UITableView?
- 6. UITableView不能正常滾動到底部以編程方式
- 7. 如何以編程方式顯示FocusVisualStyle?
- 8. 如何以編程方式顯示UISegmentedControl?
- 9. 如何以編程方式顯示UITableViewController
- 10. 如何用底層log4j框架以編程方式配置slf4j
- 11. UITableView以編程方式調用滑動操作
- 12. 以編程方式平滑滾動UIPageViewController
- 13. 以編程方式滑動UISlider
- 14. 滑動菜單以編程方式
- 15. 如何以編程方式向下滾動頁面?
- 16. iPhone SDK - 如何使用動畫以編程方式滾動UITableView?
- 17. ActionBarSherlock SearchView - 如何以編程方式顯示下拉菜單
- 18. iOS UITableView以編程方式顯示節標題
- 19. 以編程方式突出顯示UITableView單元格
- 20. 以編程方式在底部顯示admob廣告
- 21. UIRefreshControl在UITableView iOS6的底部?
- 22. 如何以編程方式在TextView上顯示滾動條
- 23. 如何用動畫以編程方式隱藏和顯示WKInterfaceGroup?
- 24. 如何以編程方式顯示/推動導航控制器
- 25. 如何以編程方式顯示/顯示DatePicker在Xamarin.Forms
- 26. 如何以編程方式在textview圖層下添加一行
- 27. 如何以編程方式將UITableView滾動到特定部分
- 28. 如何以編程方式滾動到ListView的底部?
- 29. 如何以編程方式滾動到WinRT中TextBox的底部?
- 30. 如何以編程方式滾動到Flex中的mx:TextArea底部?
我我們注意到如果你在調用'endRefreshing'後沒有重置contentOffset,就會導致單元繪製問題:'[myTableView setContentOffset:CGPointZero animated:YES];' –
不適用於iOS8 – AlKozin
不能在ios 9中工作。 – cdub