Ответ 1
Просто добавьте это в метод ViewDidLoad
self.automaticallyAdjustsScrollViewInsets = NO;
моя проблема: с iOS 7 в сгруппированном UITableView
есть пробел от вершины таблицы и первой ячейки.
Странно, что когда я загружаю контент в первый раз, таблица выглядит нормально, как на первом изображении, но когда я прокручиваю вниз, между верхней и первой ячейками появляется пробел, как во втором:
В стиле plain это поведение не вышло, но, к сожалению, мне нужно использовать сгруппированный вид таблицы.
Есть идеи о?
Просто добавьте это в метод ViewDidLoad
self.automaticallyAdjustsScrollViewInsets = NO;
Ответ был очень забавным для меня и моей команды, а работал как шарм
ПРИЧИНА:
Мы заметили, что это происходит только для первого представления в иерархии представления, если это первое представление является UITableView. Таким образом, у всех других подобных UITableViews нет этого раздражающего раздела, кроме первого. Мы пробовали перемещать UITableView с первого места в иерархии представлений, и все работало, как ожидалось.
он разрешает мою аналогичную проблему:
if ([[UIDevice currentDevice].systemVersion floatValue] >= 7){
tableView.contentInset = UIEdgeInsetsMake(-20, 0, 0, 0);
}
Перейдите к инспектору атрибутов контроллера просмотра, выбрав xib или контроллер в Storyboard. Снимите флажок Настроить прокрутки в в Макет. Это решит проблему
Если вы используете UITableView с сгруппированным стилем и только 1 группу, используйте простой стиль, вместо этого решите свою проблему.
UITableViewController *tableViewController;
tableViewController = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain];
Простейшим решением этой проблемы в сгруппированном типе tableView
является:
tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.tableView.bounds.size.width, 0.01f)];
ребята! У меня такая же проблема. TableView появился со свободным пространством между навигационной панелью и первой ячейкой. Этот код спас меня:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
if (section == 0) {
return 10;
}
else return 2;
}
Произошло пространство выше самого UITableView, а также между ячейками. Нашел мое решение в двух разных ответах выше. Поставил его снова, чтобы никто не пропустил оба решения.
Это удалило пространство сверху:
self.automaticallyAdjustsScrollViewInsets = NO;
и это удалило пробелы под ячейками: Установка атрибута "Стиль" в UITableView на "Обычный"
Я работаю с Xcode 7.3.1
, iOS9
и swift 2
. Я хотел бы поделиться тем, что сработало для меня:
Просто добавьте это в ваш метод ViewDidLoad
self.automaticallyAdjustsScrollViewInsets = false;
Начиная с iOS 7, вы автоматически получаете заголовок группы и некоторое пространство. Сравните приложение с приложением "Настройки", и вы увидите. Вы можете обойти это, указав UITableView, чтобы установить высоту заголовка как можно меньше. См. Как скрыть заголовок первой группы.
Я понимаю, что на это был дан ответ давным-давно, но для кого-то, кто сталкивается с аналогичной ситуацией, я расскажу, что в итоге работает для меня:
Если вы используете xib, выберите представление верхнего уровня и установите "Строка состояния" на "Нет" в области "Имитированные показатели" в Инспекторе атрибутов. Исправлена проблема с расстоянием.
Для меня это не сработало
self.automaticallyAdjustsScrollViewInsets = NO;
Это привело к тому, что табличный вид находился под навигационной панелью.
Что сработало для меня, это войти в мою раскадровку и изменить размер моего стола. Кажется, у моего tableView был разрыв в 20 пикселей в верхней части, чтобы позволить statusBar. Я масштабировал его, и все прекрасно выстроилось.
Я видел это дополнительное пространство в верхней части одного из моих табличных представлений в очень странной ситуации.
После того, как я добавил UIScrollView
в качестве корневого представления моего первого контроллера в моем стеке навигации, если я представил следующий контроллер как Show Detail
segue, мой следующий контроллер имел бы пространство над его табличным представлением.
Решение для меня состояло в том, чтобы изменить segue на Present Modally
, и все вернулось к нормальному.
Самая странная часть изменения segue заключалась в том, что до того, как я добавил, что корневое представление было UIScrollView
, мой Show Detail
segue представлял следующий контроллер по модулю. Однако после того, как я добавил root UIScrollView
, Show Detail
segue нажимал на следующий контроллер (чего я не хотел).
Для решения этой проблемы убедитесь, что вы не отметили это поле в ViewController:
В ViewController → Attibutes Inspector → Layout (unchecked - Настроить прокручиваемые вставки)
если этого недостаточно, попробуйте это в TableView, установите Style в Обычная:
Это решит вашу проблему.
Имел подобную проблему, даже если установить autoAdjustsScrollViewInsets на NO. Это решило для меня:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;
{
return CGFLOAT_MIN;
}
В UIViewController.h
SDK iOS9 есть способ:
@property(nonatomic,assign) BOOL automaticallyAdjustsScrollViewInsets NS_AVAILABLE_IOS(7_0); // Defaults to YES
не является свойством, поэтому
self.automaticallyAdjustsScrollViewInsets = NO;
должен быть
-(BOOL)automaticallyAdjustsScrollViewInsets{
return NO;
}