2013-10-21 3 views
13

私は(のUITableViewControllerなし)それのようなUIRefreshControlを使用する上のインセットを与える:はUIRefreshControl

UIRefreshControl *refreshControl = [UIRefreshControl new]; 
[refreshControl addTarget:self action:@selector(viewDidBeginRefreshing:) forControlEvents:UIControlEventValueChanged]; 
[self.table addSubview:refreshControl]; 

問題は、リフレッシュホイールがUINavigationControllerの半透明のバー(ios7)の下方に配置されています。 StackOverflowでこの問題に関するトピックはいくつかあります。そして彼らは私にとって貴重な解決策をもたらしませんでした。

私が望むのは、私のUIRefreshControlのy位置を例えば80px下げることです。

注: UITableViewControllerの外でUIRefreshControlを使用することはお勧めできません。だからそれについて警告する必要はありません。

+0

私のUITableViewは、私のビューの残りの部分と同様にプログラムで設定されていることに注意してください。 (しかし、何もする必要はありません) – AncAinu

答えて

27

私は、非常に簡単な解決策を見つけたので、きれいではないが、魔法のように動作します。

リフレッシュ制御を設定した別のサブビューに入れるだけです。

UIView *refreshView = [[UIView alloc] initWithFrame:CGRectMake(0, 80, 0, 0)]; 
[self.table addSubview:refreshView]; 

UIRefreshControl *refreshControl = [UIRefreshControl new]; 
[refreshControl addTarget:self action:@selector(viewDidBeginRefreshing:) forControlEvents:UIControlEventValueChanged]; 
[refreshView addSubview:refreshControl]; 
+2

上記のように、 'UIView'コンテナに' UIRefreshControl'をサブビューとして追加する前に、 'UIView'コンテナを' UITableView'に追加してください。私はそれを行ったし、その逆もありません。 – pechar

+0

'' UIRefreshControlはUITableViewController''によってのみ管理されるかもしれません。 – SimplGy

0

はあなたのUIViewControllerでのviewDidLoadでこれを追加してください:

if ([self respondsToSelector:@selector(edgesForExtendedLayout)]) 
    self.edgesForExtendedLayout = UIRectEdgeNone; 
+0

それは動作します...私の望むやり方ではなく、それはナビゲーションバーを不透明にし、テーブル全体を制約します。 – AncAinu

関連する問題