2017-02-27 3 views
1

ich eine benutzerdefinierte Zelle in ihrem Inhalt Ansicht gemacht habe, habe ich seinen Hintergrund mit Farbverlauf effect.Below gesetzt sind meine CodesVerlaufsfarbe ändert sich mit der Höhe des Inhalts Ansicht

override func awakeFromNib() { 
    super.awakeFromNib() 
    view1.backgroundColor = UIColor.whiteColor() 
    view1.layer.shadowRadius = 10 
    view1.layer.shadowOffset = CGSizeMake(0, 0) 
    view1.layer.shadowColor = UIColor.blackColor().CGColor 
    view1.clipsToBounds = false 
    self.view1.layer.shadowOpacity = 0.3; 

    view1.layer.cornerRadius = 5 
    view2.layer.cornerRadius = 5 

    descriptionLabel.textColor = UIColor.lightGrayColor() 
    self.setupGradient() 
} 

func setupGradient() { 
    let gradient: CAGradientLayer = CAGradientLayer() 
    gradient.frame = self.view2.bounds 
    gradient.colors = [ UIColor(red: 152.0/255.0, green: 116.0/255.0, blue: 189.0/255.0, alpha: 1.0).CGColor, UIColor(red: 105.0/255.0, green: 88.0/255.0, blue: 158.0/255.0, alpha: 1.0).CGColor ] 
    gradient.locations = [0.0, 0.75] 
    gradient.cornerRadius = 5 
    self.view2.layer.insertSublayer(gradient, atIndex: 0) 
} 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("RewardDetailCell", forIndexPath: indexPath) as! RewardDetailCell 
    cell.descriptionLabel.text = labelArray[indexPath.row] 
    cell.points.text = dataArray[indexPath.row] 
    cell.totalPoints.text = pointsDetail[indexPath.row] 
    return cell 
} 

Wie der Höhe des Gradienten Effekt erhöht ändert sich auch absurd. nur für die erste Zelle enter image description here

+0

hinzufügen 'cellforrowAtIndexPath' Code – Priyal

Antwort

1

einfach außer Kraft setzen l ayoutSubviews Verfahren und machen den Rahmen des Gradientenschicht gleich der zugehörigen Ansicht des gebunden, so dass Ihre Gradientenschicht die gleiche wie die zugehörige Ansicht haben kann.

+0

Es funktioniert nicht –

+0

werden Sie bitte zeigen, was Sie in dieser Methode geschrieben haben. – Shubham

+0

Vergessen Sie auch nicht, layoutIfNeeded für Zelle in CellForRowAtIndexPath aufzurufen. – Shubham

0

Der Code, den Sie in geschrieben haben „setupGradient()“, diese Methode aus cellForRowAtIndexPath nennen, als awakeFromNib() aufgerufen werden, wenn die Zelle für erstes Mal erstellt wird, so ist die rect für Gradientenschicht und so ist die Höhe für andere Zellen nicht erhöht. Entfernen Sie also die Zeile self.setupGradient() von watchFromNib(). Sie müssen also den folgenden Code implementieren.

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("RewardDetailCell", forIndexPath: indexPath) as! RewardDetailCell 
    cell.descriptionLabel.text = labelArray[indexPath.row] 
    cell.points.text = dataArray[indexPath.row] 
    cell.totalPoints.text = pointsDetail[indexPath.row] 
    cell.setupGradient() 
    return cell 
} 
Verwandte Themen