2016-07-22 29 views
0

Ok, ich habe eine Sammlungsansicht und eine benutzerdefinierte Zelle, die ich mit Xib-Datei erstellt, so dass ich die gleiche Zelle in einer anderen Sammlungsansicht in einer anderen Ansicht verwenden konnte. In meinem cellForItemAtIndexPath ich habe:CAGradientLayer wird nicht angezeigt?

let cell = collectionView.dequeueReusableCellWithReuseIdenitifier(cellIdentifier, forIndexPath: indexPath) as! StoriesCollectionViewCell 
cell.setCell(arrArticles[indexPath.item]) 

return cell 

und in meiner benutzerdefinierten Zellklasse im SetCell func:

func setCell(article : Article) { 
    self.articleImageView.alpha = 0.0 
    self.storyHeadline.text = article.headline 

    //set the background for the txtView to a gradient, from clear to white 
    let gradient = CAGradientLayer() 
    gradient.frame = txtView.frame 
    gradient.colors = [UIColor.clearColor().CGColor, UIColor.whiteColor().CGColor] 
//  gradient.startPoint = txtView.frame.origin 
//  gradient.endPoint = CGPointMake(txtView.frame.maxX, txtView.frame.maxY) 
    self.txtView.layer.insertSublayer(gradient, atIndex: 0) 

    //for testing purpose only, will be replaced by web service response 
    let dateFormatter = NSDateFormatter() 
    dateFormatter.dateStyle = .MediumStyle 
    dateFormatter.timeStyle = .NoStyle 

    self.storyHeadlineDate.text = dateFormatter.stringFromDate(article.date!) 
    manager.imageForArticle(article) { (image) in 
     self.articleImageView.image = image 
     UIView.animateWithDuration(1, animations: { 
      self.articleImageView.alpha = 1.0 
     }) 
    } 
    self.layer.cornerRadius = 5.0 
} 

alles funktioniert, wie ich es anders als die Gradient Hintergrundfarbe möge. Ich fragte mich auch, ob es eine bessere Delegate-Methode gab, um diesen Gradienten zu setzen. TxtView ist eine UIView, die von der xib, btw erstellt und verlinkt wurde.

+0

prüfen Steigungsrahmen Eigenschaft, Breite, Höhe ... –

+0

ja ich habe überprüft, dass zum Zeitpunkt der in die Unterschicht eingeführt wird, nach LLDB Print-Anweisung ist es: Breite - 180.0, Höhe - 35.0 ... das ist als txtView als das gleiche korrekt, und beide haben die gleichen x, y-Werte –

Antwort

0

versuchen Sie diesen Code auf tableViewCell zu schreiben Datei

override func didMoveToSuperview() { 

    let screenWidth = UIScreen.mainScreen().bounds.width 
    gradientView.bounds.size.width = screenWidth 
    let gradient: CAGradientLayer = CAGradientLayer() 
    gradient.frame = gradientView.bounds 
    gradient.colors = [ 
     UIColor(hex: "#030303" ,alpha: 0).CGColor, 
     UIColor(hex: "#030303" ,alpha: 0.6).CGColor ] 
    print("color set: ", gradient.colors) 
    gradient.locations = [0.0, 0.6] 
    gradient.opacity = 0.4 

    gradientView.layer.insertSublayer(gradient, atIndex: 0) 
    gradientView.layer.masksToBounds = true 

}