2013-10-21 9 views
13

używam UIRefreshControl podobnego (bez UITableViewController):Daj górny margines do UIRefreshControl

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

Problem jest koło odświeżania jest umieszczony poniżej prześwitującej barze UINavigationController za (ios7). Jest tylko kilka tematów dotyczących tego problemu w StackOverflow. I nie przyniosły mi żadnego cennego rozwiązania.

Chcę, aby moja pozycja UIRefreshControl na przykład 80px spadła.

Uwaga: Wiem, że nie zaleca się używania UIRefreshControl poza kontrolerem UITableViewController. Więc nie musisz o tym ostrzec.

+0

Może być dobrze zauważyć, że mój UITableView jest skonfigurowany z automatycznym układem, jak reszta moich widoków, programowo. (Ale nie powinno to mieć z tym nic wspólnego) – AncAinu

Odpowiedz

27

znalazłem rozwiązanie, bardzo proste, nie tak czysty, ale działa jak czar.

Wystarczy umieścić kontrolkę odświeżania w innym wyodrębnionym widoku.

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

Jak pokazano powyżej, pamiętaj o dodaniu kontenera 'UIView' do' UITableView' przed dodaniem 'UIRefreshControl' jako podglądu do kontenera' UIView'. Zrobiłem to na odwrót i nie udało się. – pechar

+0

''UIRefreshControl może być zarządzany tylko przez UITableViewController'', myślę, że spowodowany przez problem @pechar notatki – SimplGy

0

Spróbuj dodać ten w viewDidLoad w swojej UIViewController:

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

Działa, ale ... nie tak, jak chcę, sprawia, że ​​pasek nawigacyjny jest nieprzezroczysty i ogranicza cały stół. – AncAinu

Powiązane problemy