UITableView/UITableViewCell с прозрачным фоном на iPad с iOS7
Вчера вечером я решил перейти на Xcode 5 и посмотреть на мой текущий проект. После обновления моих раскадровки к новому интерфейсу все выглядело великолепно и отлично работало. Поскольку у меня есть универсальный бинарный файл, я решил проверить и iPad на iPad, и заметил, что новый белый фон был введен в мой UITableview, где когда-то использовался прозрачный/прозрачный цвет. Похоже, что это происходит на уровне ячейки, а не на уровне таблицы. Когда я запускаю вещи на симуляторе 6.1, все выглядит отлично на iPad и iPhone. И все отлично выглядит на iPhone для iOS7.
Все, что я настроил для создания интерфейса, идентично для iPhone и iPad. Из того, что я могу сказать, это связано с этим новым "представлением контента" (которое является подгруппой элемента Cell), не выполняющим прозрачные значения/настройки.
Любые мысли/идеи?
Ответы
Ответ 1
После нескольких часов работы с конструктором интерфейса, я думаю, что там может быть ошибка. Поэтому я начал искать программный ответ. Очевидно, я начал здесь, я мог бы сэкономить массу времени. Добавив к методу:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
Я смог решить проблему прозрачности на iPad, добавив эту строку:
cell.backgroundColor = [UIColor clearColor]; // Adding this fixes the issue for iPad
Надеюсь, это поможет всем остальным с белым фоном, видимым для ipad с таблицами и iOS7!
Ответ 2
Если вы используете пользовательский UITableViewCell и вызывают его из раскадровки /xib, вы можете использовать следующий код.
@implementation YourCustomTableViewCell
- (void) awakeFromNib
{
self.backgroundColor = [UIColor clearColor];
}
Ответ 3
В случае, если у кого-либо еще есть проблемы с прозрачностью таблиц/ячеек на iPad, это может помочь (скопировано из fooobar.com/questions/160512/..., оно быстро с момента они меняются)
Кажется, что где-то в процессе добавления UITableView в окно (между willMoveToWindow и didMoveToWindow), некоторые iPad reset backgroundColor таблицы видят белый. Он делает это скрытно, не используя свойство backgroundColor.
Теперь я использую это как базовый класс вместо UITableView, когда мне нужна цветная/прозрачная таблица...
class ColorableTableView : UITableView {
var _backgroundColor:UIColor?
override var backgroundColor:UIColor? {
didSet {
_backgroundColor = backgroundColor
}
}
override func didMoveToWindow() {
backgroundColor = _backgroundColor
super.didMoveToWindow()
}
}
Ячейки также имеют свой backgroundColor для белого на моем iPad таким же образом (то есть те, которые находятся в таблице во время перехода к окну), поэтому то же самое относится к ним, чтобы вы не попали в нечетную непрозрачную ячейку время от времени выскакивая, поскольку он повторно используется...
class ColorableTableViewCell : UITableViewCell {
var _backgroundColor:UIColor?
override var backgroundColor:UIColor? {
didSet {
_backgroundColor = backgroundColor
}
}
override func didMoveToWindow() {
backgroundColor = _backgroundColor
super.didMoveToWindow()
}
}
Ответ 4
Если вы используете статическую таблицу ячеек. вы можете сделать следующее:
override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
cell.backgroundColor = UIColor.clearColor()
}