Проблема с градиентом ярлыка эскиза видео в приложении iOS 12 Photos

Библиотека фотографий на iOS 12 помещает на миниатюру какой-то хитрый градиентный фон для отображения метки продолжительности видео. Я записал видео с чисто белым фоном, и на этикетке есть градиент от белого к черному. Но на других эскизах градиент другой. Хотите знать, какая техника здесь применяется? Как они выбирают цвета для градиента в зависимости от миниатюр?

введите здесь описание изображения

введите здесь описание изображения

Даже в WhatsApp есть собственный градиент, который отображает дату на изображении. Если сложно найти градиент, который использует приложение «Фото» на iOS, подойдет любое альтернативное решение градиента, если оно не мешает работе.


person Deepak Sharma    schedule 01.08.2019    source источник


Ответы (4)


Я не думаю, что это просто от черного к белому. Он больше похож на черный альфа 1 и белый альфа 0. Может быть, черный альфа 0,5 или белый альфа 0. Поиграйте с точными значениями, но в этом суть.

person Daniel    schedule 06.08.2019

Примеры градиентов

Мне удалось довольно легко воссоздать это с помощью простого градиента, который менялся от 176,176,176,0 вверху до 49,49,49,1 внизу.

person garrettmurray    schedule 10.08.2019
comment
Stack Overflow - это не сервис для написания кода. Вы спрашивали о создании градиента, который визуально соответствовал бы градиенту в фотографиях, и цвета / градиенты, которые я показал здесь, будут абсолютно работать, если их использовать в коде. Я не писал Swift-код для генерации градиентов (похоже, что это сделали другие), но вводить в заблуждение, кажется, не работает, когда эти градиенты абсолютно работают. - person garrettmurray; 12.08.2019
comment
Не могли бы вы поделиться вторым изображением шаблона, и я могу протестировать, сгенерировав из него видео, и посмотреть, соответствует ли оно в библиотеке фотографий? - person Deepak Sharma; 13.08.2019

Если хочешь попробовать.

  • Сделайте UiImageView в обратном направлении к UILabel.
  • И установите изображение ниже в UiImageView.

введите здесь описание изображения

  • И установите UiLabel выше UiImageView, в моей последней задаче мне это пригодится Smile.
person steveSarsawa    schedule 10.08.2019

Здесь я использую расширение для градиента

@IBDesignable
class GradientView: UIView {
    @IBInspectable var firstColor: UIColor = UIColor.clear {
        didSet {
            updateGradientView()
        }
    }

    @IBInspectable var secondColor: UIColor = UIColor.clear {
        didSet {
            updateGradientView()
        }
    }

    @IBInspectable var thirdColor: UIColor = UIColor.clear {
        didSet {
            updateGradientView()
        }
    }

    override class var layerClass: AnyClass {
        get {
            return CAGradientLayer.self
        }
    }

    @IBInspectable var isHorizontal: Bool = true {
        didSet {
            updateGradientView()
        }
    }

    func updateGradientView() {
        let gradientLayer = self.layer as! CAGradientLayer

        if (self.isHorizontal) {
            //gradientLayer.colors = [firstColor, secondColor, thirdColor].map{$0.cgColor}

            gradientLayer.colors = [firstColor.withAlphaComponent(1.0), secondColor.withAlphaComponent(0.59), thirdColor.withAlphaComponent(1.0)].map{$0.cgColor}
            gradientLayer.locations = [0.29, 0.60, 1]
            gradientLayer.startPoint = CGPoint(x: 0.0, y: 0.5)
            gradientLayer.endPoint = CGPoint (x: 1.0, y: 0.5)
        } else {
            gradientLayer.colors = [firstColor.withAlphaComponent(0.5), secondColor.withAlphaComponent(0.0), thirdColor.withAlphaComponent(0.0)].map{$0.cgColor}
            gradientLayer.startPoint = CGPoint(x: 0.5, y: 1.0)
            gradientLayer.endPoint = CGPoint (x: 0.5, y: 0.5)
        }
    }
}
person Parth Patel    schedule 10.08.2019
comment
Если durationLabel является частью пользовательского UITableViewCell, не могли бы вы обновить свой код? - person Deepak Sharma; 10.08.2019