Подтвердить что ты не робот

UITableView/UITableViewCell с прозрачным фоном на iPad с iOS7

Вчера вечером я решил перейти на Xcode 5 и посмотреть на мой текущий проект. После обновления моих раскадровки к новому интерфейсу все выглядело великолепно и отлично работало. Поскольку у меня есть универсальный бинарный файл, я решил проверить и iPad на iPad, и заметил, что новый белый фон был введен в мой UITableview, где когда-то использовался прозрачный/прозрачный цвет. Похоже, что это происходит на уровне ячейки, а не на уровне таблицы. Когда я запускаю вещи на симуляторе 6.1, все выглядит отлично на iPad и iPhone. И все отлично выглядит на iPhone для iOS7.

Все, что я настроил для создания интерфейса, идентично для iPhone и iPad. Из того, что я могу сказать, это связано с этим новым "представлением контента" (которое является подгруппой элемента Cell), не выполняющим прозрачные значения/настройки.

Любые мысли/идеи?

4b9b3361

Ответ 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()
}