Установить градиент фона на кнопку в Swift

Так оно и должно работать. Тернарный оператор не означает эквивалент регулярного оператора if. Телами if и else являются утверждения , а части, следующие за ? и :, являются выражениями , которые должны оцениваться одним и тем же типом .

Иными словами: a = b ? c : d не должен быть эквивалентен if (b) a = c; else a = d;. Вместо этого b ? c : d является выражением само по себе, а присвоение его результата a не повлияет на результат.

13
задан Michael Yaworski 19 June 2016 в 01:22
поделиться

1 ответ

Это - это простое:

import UIKit
class ActualGradientButton: UIButton {

    override func layoutSubviews() {
        super.layoutSubviews()
        gradientLayer.frame = bounds
    }

    private lazy var gradientLayer: CAGradientLayer = {
        let l = CAGradientLayer()
        l.frame = self.bounds
        l.colors = [UIColor.systemYellow.cgColor, UIColor.systemPink.cgColor]
        l.startPoint = CGPoint(x: 0, y: 0.5)
        l.endPoint = CGPoint(x: 1, y: 0.5)
        l.cornerRadius = 16
        layer.insertSublayer(l, at: 0)
        return l
    }()
}

0
ответ дан 30 November 2019 в 10:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: