Swift/UIKIt: как сделать так, чтобы градиентный фон занимал всю длину UITableView?IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Swift/UIKIt: как сделать так, чтобы градиентный фон занимал всю длину UITableView?

Сообщение Anonymous »

У меня есть приложение с UITableView. Мы постепенно переходим на SwiftUI, поэтому UITableView по сути представляет собой набор представлений SwiftUI. Мне удалось заставить фон выглядеть градиентом, используя эти две функции:

Код: Выделить всё

func createBackgroundGradient() -> CAGradientLayer {
let gradientLayer = CAGradientLayer()

gradientLayer.colors = [UIColor.red.cgColor, UIColor.white.cgColor, UIColor.red.cgColor]
gradientLayer.locations = [0.0, 0.5, 1.0]
gradientLayer.frame = self.tableView.bounds

return gradientLayer
}

func refreshBackground() {
tableView.backgroundView = nil
let backgroundView = UIView()
let gradientView = createBackgroundGradient()
backgroundView.layer.addSublayer(gradientView)
tableView.backgroundView = backgroundView
}
Я вызываю эту функцию из viewWillLayoutSubview, потому что у меня появляются представления, когда мы получаем данные обратно с серверной части. Это работает для установки градиента по длине экрана. Однако я хочу, чтобы градиент занимал весь UITableView, и я хочу, чтобы он прокручивался вместе с табличным представлением (которое намного длиннее длины экрана), а не просто находился в фоновом режиме с прокруткой ячеек поверх него. .
Решение этого вопроса: градиентный цвет фона с UIScrollView выглядит так, как я хочу, но когда я меняю свою функцию обновленияBackround на это:

Код: Выделить всё

func refreshBackground() {
if let gradientSublayer = self.gradientSublayer {
gradientSublayer.removeFromSuperlayer()
}
self.gradientSublayer = createBackgroundGradient()
tableView.layer.insertSublayer(self.gradientSublayer ?? createBackgroundGradient(), at: 0)
}
Я не вижу никакой разницы в поведении — это всего лишь длина экрана, и она не меняет положение при прокрутке.
Кто-нибудь знает, как это обойти? Я думал о том, чтобы попытаться раскрасить разные разделы разными частями градиента, но, похоже, это будет очень сложно, потому что различные разделы в таблице могут быть там, а могут и не быть, в зависимости от данных, которые мы получаем. серверная часть (и это, вероятно, будет выглядеть неряшливо, потому что части градиента будут появляться по мере заполнения этих разделов).


Подробнее здесь: https://stackoverflow.com/questions/792 ... gth-of-the
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Swift/UIKIt: как сделать так, чтобы градиентный фон занимал всю длину UITableView?
    Anonymous » » в форуме IOS
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Анимированный градиентный фон в Swift UI
    Anonymous » » в форуме IOS
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Анимированный градиентный фон в Swift UI
    Anonymous » » в форуме IOS
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Как сделать так, чтобы flexbox не занимал всю ширину области просмотра?
    Гость » » в форуме CSS
    0 Ответы
    118 Просмотры
    Последнее сообщение Гость
  • Как сделать, чтобы диапазон занимал всю высоту div
    Anonymous » » в форуме CSS
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous

Вернуться в «IOS»