Дайте верхнюю вставку для UIRefreshControl
Я использую UIRefreshControl как он (без UITableViewController):
UIRefreshControl *refreshControl = [UIRefreshControl new];
[refreshControl addTarget:self action:@selector(viewDidBeginRefreshing:) forControlEvents:UIControlEventValueChanged];
[self.table addSubview:refreshControl];
Проблема заключается в том, что колесо обновления расположено под полупрозрачной панелью UINavigationController (ios7).
В StackOverflow есть только несколько вопросов по этой проблеме. И они не принесли мне никакого ценного решения.
Я хочу, например, сделать мое положение YIRefreshControl y 80px ниже.
Примечание. Я знаю, что не рекомендуется использовать UIRefreshControl вне UITableViewController. Поэтому не нужно предупреждать об этом.
Ответы
Ответ 1
Я нашел решение, очень простое, не очень чистое, но похоже на обаяние.
Просто нужно поместить элемент управления обновлением в другое подзапрос, который установлен.
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
Попробуйте добавить это в viewDidLoad в свой UIViewController
:
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
self.edgesForExtendedLayout = UIRectEdgeNone;