Animer Gradient De Vue Lors De La Sélection De Cellules

0

La question

Je suis à la recherche pour mettre en œuvre une animation pour le gradient de vue.

Toutes les étapes pour vous aider à? Actuellement, j'ai tout de prêt et un arrière-plan statique attachés aux cellules qui se montre sur la sélection et le masque lorsqu'il n'est pas de sélection. La partie la plus difficile est le travail d'animation avec lequel j'ai besoin d'une certaine aide.

gradient interface-builder ios swift
2021-11-24 01:15:16
1

La meilleure réponse

0

Vous pouvez essayer cette méthode ->Vue-Contrôleur

class VC2: UIViewController {

// MARK:- IBOutlets
@IBOutlet weak var tblSample: UITableView!

// MARK:- Private Variables
private var SelectedCell: Int?

// MARK:- View Lifecycle
override func viewDidLoad() {
    super.viewDidLoad()
    initialConfig()
}

// MARK:- Initial Config
private func initialConfig() {
    tblSample.delegate = self
    tblSample.dataSource = self
    
    } 
}

//Affichage Tableau Délégué

extension VC2: UITableViewDelegate {

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return 50
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    SelectedCell = indexPath.row
    tblSample.reloadData()
    }
}

// Table De Source De Données

extension VC2: UITableViewDataSource {

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 10
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = UITableViewCell()
    cell.textLabel?.text = "\(indexPath.row)"
    cell.selectionStyle = .none
    if SelectedCell == indexPath.row {
        DispatchQueue.main.async {
            UIView.animate(withDuration: 1,delay: 0.5, options: .curveEaseIn) {
                cell.contentView.applyGradient(colours: [.white,.blue])
            }
        }
    }
    return cell
   }
}

// Affichage de l'Extension pour appliquer et à enlever dégradé

extension UIView {

@discardableResult
func applyGradient(colours: [UIColor]) -> CAGradientLayer {
    return self.applyGradient(colours: colours, locations: nil)
}

@discardableResult
func applyGradient(colours: [UIColor], locations: [NSNumber]?) -> CAGradientLayer {
    let gradient: CAGradientLayer = CAGradientLayer()
    gradient.frame = self.bounds
    gradient.colors = colours.map { $0.cgColor }
    gradient.locations = locations
    self.layer.insertSublayer(gradient, at: 0)
    return gradient
}

func removeGradient() {
    for lay in self.layer.sublayers ?? [] {
        if lay is CAGradientLayer {
            lay.removeFromSuperlayer()
        }
    }
  }
}
2021-11-24 05:46:27

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................