日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

UIRefreshControl使用总结

發(fā)布時間:2025/3/21 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UIRefreshControl使用总结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

2019獨角獸企業(yè)重金招聘Python工程師標準>>>

????UIRefreshControl 的使用還是比較簡單的,看一下?UIRefreshControl 的定義,基本就知道怎么用了。

????UIRefreshControl 是專門為?UITableViewController 設計的,官方不建議在非 UITableViewController 中使用。

????本文主要解決兩個問題:一是在非?UITableViewController 中使用,二是修改菊花顯示位置。

1、UITableViewController + UIRefreshControl

-?(void)viewDidLoad?{[super?viewDidLoad];UIRefreshControl?*refreshControl?=?[[UIRefreshControl?alloc]?init];[refreshControl?addTarget:self?action:@selector(refresh:)?forControlEvents:UIControlEventValueChanged];self.refreshControl?=?refreshControl; }-?(void)refresh:(UIRefreshControl?*)refreshControl {NSLog(@"start?refresh");[self?performSelector:@selector(endRefresh:)?withObject:refreshControl?afterDelay:2.0f]; }-?(void)endRefresh:(UIRefreshControl?*)refreshControl {[refreshControl?endRefreshing];NSLog(@"end?refresh"); }

2、UIViewController + UITableView(UIScrollView) +?UIRefreshControl

@interface?TableViewDemo?()?<UITableViewDataSource,?UITableViewDelegate>@property?(nonatomic,?weak)?IBOutlet?UITableView?*tableView;@end -?(void)viewDidLoad?{[super?viewDidLoad];UIRefreshControl?*refreshControl?=?[[UIRefreshControl?alloc]?init];[refreshControl?addTarget:self?action:@selector(refresh:)?forControlEvents:UIControlEventValueChanged];[self.tableView?addSubview:refreshControl]; }-?(void)refresh:(UIRefreshControl?*)refreshControl {NSLog(@"start?refresh");[self?performSelector:@selector(endRefresh:)?withObject:refreshControl?afterDelay:2.0f]; }-?(void)endRefresh:(UIRefreshControl?*)refreshControl {[refreshControl?endRefreshing];NSLog(@"end?refresh"); }

????直接集成上去,這時候你會發(fā)現(xiàn)下拉的時候,頁面會跳動一下(將UITableView 換成 UIScrollView 也會有同樣的問題)。

????既然?UIRefreshControl 是由?UITableViewController 控制的,那就讓?UITableViewController 來控制,修改代碼如下:

-?(void)viewDidLoad?{[super?viewDidLoad];UITableViewController?*tableVC?=?[[UITableViewController?alloc]?init];tableVC.tableView?=?self.tableView;UIRefreshControl?*refreshControl?=?[[UIRefreshControl?alloc]?init];[refreshControl?addTarget:self?action:@selector(refresh:)?forControlEvents:UIControlEventValueChanged];tableVC.refreshControl?=?refreshControl; }

????修改之后,重新運行,這時內(nèi)容跳動的問題沒有了。

????參考:http://stackoverflow.com/questions/12497940/uirefreshcontrol-without-uitableviewcontroller/

????對于?UIScrollView,目前沒有找到更好的解決方案,如果確實要使用的話,那就用只有一個Cell的UITableView來代替 UIScrollView。參考:http://segmentfault.com/q/1010000001823169

3、修改?UIRefreshControl 顯示的位置

????菊花默認位置是在中間,總有那么一些奇葩需求,需要將菊花顯示在其他位置。目前發(fā)現(xiàn)了兩種方式修改顯示位置,但是總體來說本質(zhì)原理應該是一樣的。

????方案一:修改?UIRefreshControl 的 bounds,從而修改其顯示位置,代碼如下:

-?(void)viewDidLoad?{[super?viewDidLoad];UIRefreshControl?*refreshControl?=?[[UIRefreshControl?alloc]?init];[refreshControl?addTarget:self?action:@selector(refresh:)?forControlEvents:UIControlEventValueChanged];self.refreshControl?=?refreshControl;CGRect?bounds?=?refreshControl.bounds;bounds.origin.x?=?50;//左移?50 //????rect.origin.x?=?-50;//右移?50bounds.origin.y?=?10;//上移?10; //????rect.origin.y?=?-10;//下移?10;refreshControl.bounds?=?bounds; }

????方案二:用一個 UIView(refreshControlContainerView) 來顯示?UIRefreshControl,通過修改?refreshControlContainerView.frame 來修改菊花的顯示位置,代碼如下:?

-?(void)viewDidLoad?{[super?viewDidLoad];UIRefreshControl?*refreshControl?=?[[UIRefreshControl?alloc]?init];[refreshControl?addTarget:self?action:@selector(refresh:)?forControlEvents:UIControlEventValueChanged];self.refreshControl?=?refreshControl;UIView?*refreshControlContainerView?=?[[UIView?alloc]?initWithFrame:CGRectMake(-50,?-10,?[UIScreen?mainScreen].bounds.size.width,?44.0f)];[self.tableView?addSubview:refreshControlContainerView];[refreshControlContainerView?addSubview:self.refreshControl]; }


4、一個個人主頁的實例

? ? 實例代碼,請看 UserHomeViewController。

5、總結(jié)

????UIRefreshControl 只適用于一些簡單、與特殊的頁面,只能實現(xiàn)“下拉刷新”,不能實現(xiàn)“上拉加載更多”。

????這里對于“下拉刷新”與“上拉加載更多”推薦使用?MJRefresh ,用法簡單。


項目源代碼:https://git.oschina.net/cavintang/refresh-control-demo.git


轉(zhuǎn)載于:https://my.oschina.net/songzhu/blog/611343

總結(jié)

以上是生活随笔為你收集整理的UIRefreshControl使用总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。