Я реализовал пользовательский класс ячеек табличного представления, который наследуется от UITableViewCell
. Таблица содержит фоновое изображение, поэтому я хочу, чтобы фон ячейки был прозрачным. Выглядит отлично до iOS7.
Однако в iOS7 ячейка всегда отображается на белом фоне.
Даже для Xcode7, 2015, в раскадровке есть ошибка : вы должны установить цвет фона ячейки в коде.
ios
objective-c
cocoa-touch
ios7
Kjuly
источник
источник
Ответы:
Как сказал Apple DOC ( ссылка на класс UITableViewCell ):
Так что в моем случае для отображения ячеек с прозрачным фоном просто необходимо реализовать метод делегата в контроллере табличного представления, как показано ниже:
Просто обратите внимание : как сказал @null: «... в конструкторе интерфейсов есть ошибка ...» , я не совсем уверен, есть ли в нем ошибка, но кажется, потому что его комментарий набрал несколько голосов. Так что может быть что-то не так, если вы используете IB. :)
источник
tableView:cellForRowAtIndexPath:
методе.Я немного исследовал это и обнаружил, что ячейка backgroundColor установлена системой Appearance. Таким образом, если все ячейки в вашем приложении имеют четкий фон, самым простым решением будет:
И даже если у них разный фон, чистый цвет кажется наиболее удобным по умолчанию.
источник
UITableViewCell
, поэтому для меня не было проблемой предоставить суперкласс с инициализатором для установки цвета BGclearColor
, но угадайте, что? Это не сработало ... Я имею в виду, ПОЧЕМУ, ЯБЛОКО?Запишите это в свой метод cellForRowAtIndexPath перед возвращением cell;
источник
Цвет фона по умолчанию
UITableViewCell
в iOS 7 - белый.Вы должны установить
backgroundColor
свойство где-то в вашем коде. Например, установите его после того, как вы заново создали ячейку.источник
На самом деле я обнаружил, что проблема возникла из-за того, что цвет фона UITableView не был установлен для очистки. Если вы измените цвет фона UITableViewCell на прозрачный, и вы обнаружите, что вы по-прежнему видите белый, убедитесь, что цвет фона UITableView установлен на «прозрачный» (или что вы хотите).
В Свифте
источник
Это определенно ошибка iOS. В iOS 8 настройка цвета фона в
Interface Builder
iPhone работает нормально, но в iPad это всегдаwhiteColor
. Чтобы исправить это, вcellForIndexPath
сообщении источника данных, поместив это в:cell.backgroundColor = cell.backgroundColor
И это будет работать. Именно поэтому я сказал, что это ошибка, так как сам код в значительной степени фуфло, но он работает.
источник
Возможно, ваш UITableViewCell выбран по умолчанию. Это можно подтвердить с помощью нового визуального отладчика Xcode 6s (или узнать, какой именно вид вызывает появление этой белой ячейки).
Интересно, что после того, как я узнал об этом ... установка цвета фона выбранной ячейки для очистки все еще не работала ... проводя дополнительные исследования, оказалось, что мне просто пришлось изменить стиль выделения при создании этой пользовательской ячейки:
источник
Я обнаружил, что ничего из вышеперечисленного не работает с XCode 5.1.1, iOS 7.1.
Если вы используете Interface Builder с ячейками-прототипами, выберите ячейку-прототип, затем в селекторе атрибутов в разделе «Вид» измените фоновую форму по умолчанию на «Очистить цвет»:
Кажется, это работает нормально. Ни одно из приведенных выше изменений кода не требуется - это чисто решение IB.
источник
Принятый ответ не решил проблему для меня. Я должен был сделать это:
Из метода класса источника данных таблицы cellForRowAtIndexPath:
источник
cell = [tableView dequeueReusableCellWithIdentifier:<#Reuse ID#> forIndexPath:indexPath]
. В более ранних версиях вы отбрасывали аргумент indexPath, а затем проверяли на nil, создавая экземпляр с помощьюinitWithStyle:reuseIdentifier
своего фрагмента кода в случае nil.Для меня настройка
cell.backgroundColor = cell.contentView.backgroundColor;
либо вtableView:willDisplayCell:forRowAtIndexPath:
илиtableView:cell:forRowAtIndexPath:
сделал работу.Это потому, что я установил цвет фона contentView в Интерфейсном Разработчике как желаемый.
источник
При добавлении объектов пользовательского интерфейса в ячейку Xcode 5 / IOS 7 добавляет новое «представление содержимого», которое будет супервизором всех элементов в ячейке. Чтобы установить цвет фона ячейки, установите цвет фона этого представления содержимого. Приведенные выше решения не сработали для меня, но этот сработал хорошо для меня.
источник
Решение Swift 1.2:
Просто добавьте явное определение цвета фона вашей ячейки следующим образом:
источник
Была похожая проблема, пришлось
добавьте это к коду, чтобы исправить это
источник
Вы также можете использовать цветовой код, чтобы сделать вашу ячейку UITableView прибыльной.
Это код для применения метода цветового кода:
источник