IOS 8 серый ящик над UITableView

Я создаю приложение, где мне нужно использовать UITableView для отображения контента организованным образом, но так как я обновлялся до iOS 8 и Xcode 6, я получал тайну серого окна почти по всему виду. Это можно увидеть на изображении ниже. Это не происходит на каждом UITableView, только в некоторых (без видимых паттернов).

enter image description here

Ответ 1

В iOS 8 вы должны указать высоту в делегате UITableView:

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    return 44.0;
}

В iOS 7 и ранее было принято решение по умолчанию. Подробнее см. эту ссылку.

Ответ 2

Это определенно ошибка в XCode6-Beta2. Я нашел обходное решение. Выберите раскадровку и перейдите в утилиту File Inspector. Снимите флажок "Использовать автоматический макет", затем нажмите "Отключить классы классов" во всплывающем окне.

Автоматическая компоновка, по-видимому, сильно нарушена в бета2. После того, как вы отключите классы размера, исчезнут загадочные предупреждения о неоднозначном прокручиваемом контенте.

Я смог снова включить классы размера и автомат, а серый прямоугольник по-прежнему отсутствует, но все не в том месте после потери информации о размерах. Это беспорядок.

Ответ 3

Как ни странно, это связано с стилем Separator Table View. Если вы установите значение "Нет", проблема исчезнет. Но, конечно, тогда у вас нет разделителей! Если вы хотите использовать разделители Single Line, вам нужно вручную указать высоту ячейки в -tableView:heightForRowAtIndexPath:.

Я понятия не имею, почему это так, но я предполагаю, что это имеет какое-то отношение к новым строкам таблицы размеров. Время проведения некоторых исследований:)

Ответ 4

В iOS 8 высота строки может быть установлена ​​автоматически для вас. Все, что вам нужно сделать, - установить верхнее и нижнее ограничение в contentView UITableViewCell, как это (обратите внимание на ограничения):

Interface builder - defining the uitableviewcell

Таким образом, высота строки будет автоматической, и вам не нужно будет устанавливать фиксированную высоту. Это фиксирует серый цвет фона, с которым вы столкнулись.

Ресурс: http://www.shinobicontrols.com/blog/posts/2014/07/24/ios8-day-by-day-day-5-auto-sizing-table-view-cells