Я пытаюсь изменить цвет фона UITableViewHeaderFooterView. Хотя представление появляется, цвет фона остается цветом по умолчанию. Я получаю журнал от xcode, в котором говорится:
Установка цвета фона в UITableViewHeaderFooterView устарела. Вместо этого используйте contentView.backgroundColor.
Однако ни один из следующих вариантов не работает:
myTableViewHeaderFooterView.contentView.backgroundColor = [UIColor blackColor];
myTableViewHeaderFooterView.backgroundView.backgroundColor = [UIColor blackColor];
myTableViewHeaderFooterView.backgroundColor = [UIColor blackColor];
Я также пробовал изменить цвет фона представления в файле xib.
Какие-либо предложения? Спасибо.
iphone
ios
xcode
uitableview
Chun
источник
источник
Ответы:
Вы должны либо использовать myTableViewHeaderFooterView.tintColor, либо назначить настраиваемое фоновое представление для myTableViewHeaderFooterView.backgroundView.
источник
tintColor
не работает на iOS7. Я мог изменить цвет, толькоmyTableViewHeaderFooterView.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"myImage.png"]];
iOS 8, 9, 10, 11 ...
Единственный способ установить любой цвет (с любым альфа-каналом) - использовать
backgroundView
:стриж
Obj-C,
Ответы на комментарии
Ни один из этих вариантов не работает надежно (несмотря на комментарии ниже)
backgroundView
изменяется автоматически. (Нет необходимости добавлять ограничения)Управляйте альфой с помощью
UIColor(white: 0.5, alpha: 0.5)
илиbackgroundView.alpha = 0.5
.(конечно, подойдет любой цвет)
При использовании XIB создайте корневой вид a
UITableViewHeaderFooterView
иbackgroundView
программно свяжите :Зарегистрироваться:
Загрузить с помощью:
↻ воспроизведение анимации
► Найдите это решение на GitHub и дополнительную информацию о Swift Recipes .
источник
view.BackgroundView = new UIView(view.Bounds) { BackgroundColor = UIColor.Clear };
Setting the background color on UITableViewHeaderFooterView has been deprecated. Please use contentView.backgroundColor instead.
В iOS 7
contentView.backgroundColor
у меня работало,tintColor
нет.Хотя
clearColor
это не сработало для меня, решение, которое я нашел, - установить дляbackgroundView
свойства прозрачное изображение. Может кому поможет:источник
Убедитесь, что вы установили backgroundColor
contentView
дляUITableViewHeaderFooterView
:Тогда все заработает.
источник
Что касается меня, я пробовал все, что указано выше, но все равно получал предупреждение «Установка цвета фона в UITableViewHeaderFooterView устарела. Используйте вместо этого contentView.backgroundColor». затем я попробовал это: в файле xib был выбран цвет фона для представления заголовка, чтобы очистить цвет вместо цвета по умолчанию, как только я изменил его на значение по умолчанию, предупреждение исчезло.
источник
Для четкого цвета я использую
Мне это кажется нормальным.
источник
backgroundView = UIView()
и потомbackgroundColor = .clear
была единственным рабочим решением. Спасибо.Для сплошных цветов фона
contentView.backgroundColor
достаточно установить:Для цветов с прозрачностью, включая
.clear
цвет, это больше не работает:Для полностью прозрачного заголовка раздела установите для
backgroundView
свойства пустое представление:Однако остерегайтесь возможных побочных эффектов. Если для представления таблицы не установлено значение «Сгруппировано», заголовки разделов будут привязываться вверх при прокрутке вниз. Если заголовки разделов прозрачны, содержимое ячеек будет видно насквозь, что может выглядеть не очень хорошо.
Здесь заголовки разделов имеют прозрачный фон:
Чтобы предотвратить это, лучше установить фон заголовка раздела на сплошной цвет (или градиент), соответствующий фону представления таблицы или контроллера представления.
Здесь заголовки разделов имеют полностью непрозрачный градиентный фон:
источник
В конструкторе интерфейса откройте свой .xib на верхнем элементе, в инспекторе атрибутов установите цвет фона по умолчанию. Затем перейдите в представление содержимого и установите там цвет фона (ссылка на https://github.com/jiecao-fm/SwiftTheme/issues/24 ).
источник
На iOS9
headerView.backgroundView.backgroundColor
у меня работали:На iOS8 я использовал
headerView.contentView.backgroundColor
без проблем, но теперь с iOS 9 у меня возникла странная проблема, из-за которой цвет фона не заполнял все пространство ячейки. Итак, я попробовал простоheaderView.backgroundColor
и получил ту же ошибку из OP.Итак, теперь все работает отлично и без предупреждений, используя
headerView.backgroundView.backgroundColor
источник
если вы создали собственный подкласс
UITableViewHeaderFooterView
сxib
файлом, вам следует переопределитьsetBackgroundColor
. Оставьте это пустым.И это решит вашу проблему.
источник
Если вы настраиваете ячейку заголовка раздела с помощью Раскадровка / Перо , убедитесь, что цвет фона установлен по умолчанию для представления «Заголовок раздела таблицы».
И если вы создаете подкласс
UITableViewHeaderFooterView
и используете nib, то вам нужно создать aIBOutlet
для представления содержимого и назвать его, например.containerView
, Его не следует путать сcontentView
родительским элементом этого представления контейнера.При такой настройке вы
containerView
вместо этого меняете цвет фона .источник
Я попробовал с цепочкой appearanceWhenContainIn, и у меня это сработало.
источник
может быть, потому что backgroundView не существует
это работает для меня.
источник
iOS 12, Swift 5. Если вы хотите (или пытаетесь!) использовать прокси-сервер внешнего вида, работает следующее решение:
или
источник
Забудьте о трудностях.
Добавьте в свой проект
UITableViewHeaderFooterView+BGUpdate.swift
с помощью кода ниже:Использование просто, как и ожидалось раньше:
Примеры использования :
1) У делегата
tableView:viewForHeaderInSection:
:или
2) В вашем собственном классе представления заголовка:
источник
Установка BackgroundView с прозрачным цветом отлично работает для видимых заголовков. Если таблица прокручивается для отображения заголовков внизу, это решение не работает.
PS Моя таблица состоит только из заголовков без ячеек.
источник
Swift:
источник
Создайте UIView и установите цвет фона, затем установите его на self.backgroundView.
источник
Я чувствую себя обязанным поделиться своим опытом. У меня был этот фрагмент кода, который отлично работал с iOS 10 и iOS 11.
headerView?.contentView.backgroundColor = .lightGray
Затем я внезапно решил развернуть приложение для iOS 9, поскольку есть некоторые устройства (iPad mini некоторых более старых поколений не обновляется ни для каких ОС, кроме 9) - единственное решение, которое работало для всех iOS 9, 10 и 11. заключалась в том, чтобы определить базовое представление для заголовка, которое затем содержит все другие подвиды заголовка, связать его с раскадровкой и установить
backgroundColor
для этого базового представления.Будьте внимательны при подключении розетки, чтобы не вызывать ее:
backgroundView
поскольку в некоторых уже есть свойство с таким именемsuperclass
. Я позвонил своемуcontainingView
Также при подключении управления розеткой нажмите на вид,
Document Outline
чтобы убедиться, что он не подключен кfile owner
источник
источник