Градиентные ячейки в UICollectionView [дубликат]

AjaxBehaviorEvent не относится к RichFaces. Это характерно для JSF2. Поэтому вы можете просто использовать его в PrimeFaces.

public void retrievePostalCodeCity(AjaxBehaviorEvent event) {
    UIComponent component = event.getComponent();
    // ...
}

В качестве альтернативы или для случая, когда действительно невозможно в другом месте, вы всегда можете использовать новый JSF2 UIComponent#getCurrentComponent() .

public void retrievePostalCodeCity() {
    UIComponent component = UIComponent.getCurrentComponent(FacesContext.getCurrentInstance());
    // ...
}

Кстати, та же самая конструкция должна отлично работать с собственными JSF2 . Я не вижу причин использовать здесь. Это было бы единственным способом, если бы вы фактически использовали компонент PrimeFaces, такой как .


Не связанный с конкретной проблемой, event="change" уже по умолчанию. Вы можете просто опустить это.

1
задан Jaydeep 5 August 2017 в 04:25
поделиться

2 ответа

Вы можете создать расширение UIView:

extension UIView{
    func addGradientBackground(firstColor: UIColor, secondColor: UIColor){
        clipsToBounds = true
        let gradientLayer = CAGradientLayer()
        gradientLayer.colors = [firstColor.cgColor, secondColor.cgColor]
        gradientLayer.frame = self.bounds
        gradientLayer.startPoint = CGPoint(x: 0, y: 0)
        gradientLayer.endPoint = CGPoint(x: 0, y: 1)
        print(gradientLayer.frame)
        self.layer.insertSublayer(gradientLayer, at: 0)
    }
}

И внутри вашей ячейки просто:

override func awakeFromNib() {
    super.awakeFromNib()
    self.addGradientBackground(firstColor: .green, secondColor: .blue)
}
1
ответ дан Phyber 16 August 2018 в 10:10
поделиться
  • 1
    Добавьте эту строку только в файл Xib, иначе, когда ячейка перезагрузится, добавьте несколько градиентов в ячейку self.addGradientBackground(firstColor: .green, secondColor: .blue) – Anup Gupta 17 April 2018 в 09:27

Сначала вам нужно создать градиент, а затем вставить подслой в свою ячейку, как показано ниже.

func gradient(frame:CGRect) -> CAGradientLayer {
    let layer = CAGradientLayer()
    layer.frame = frame
    layer.startPoint = CGPointMake(0,0.5)
    layer.endPoint = CGPointMake(1,0.5)
    layer.colors = [ 
    UIColor.red.cgColor,UIColor.blue.cgColor]
    return layer
}

//Now on your tableViewcell do below

cell.layer.insertSublayer(gradient(cell.bounds), atIndex:0)

для Swift 4.0

func gradient(frame:CGRect) -> CAGradientLayer {
        let layer = CAGradientLayer()
        layer.frame = frame
        layer.startPoint = CGPoint(x: 0, y: 0.5)
        layer.endPoint = CGPoint(x: 1, y: 0.5)
        layer.colors = [
            UIColor.gray.cgColor,UIColor.cyan.cgColor]
        return layer
    }

    cell.layer.insertSublayer(gradient(frame: backgroundView.bounds), at:0)
1
ответ дан Uma Madhavi 16 August 2018 в 10:10
поделиться
  • 1
    Я рекомендую, чтобы строка cell.layer.insertSublayer(gradient(cell.bounds), atIndex:0) помещалась внутри подкласса функции awakeFromNib () UITableViewCell и заменяла cell на self. Это может привести к задержке прокрутки, если эта строка находится в функции tableView (cellForRowAt :). – RPatel99 5 August 2017 в 04:30
  • 2
    Как реализовать замену cell на self? – Captain Code 5 August 2017 в 05:29
  • 3
    также говорит, что cgcolor недоступен в быстрой – Captain Code 5 August 2017 в 06:42