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