2015-08-06 22 views
7

'un üst kısmında siyah renkte soluyor UITableView numaralı cep telefonum var.numaralı telefonum UIImageView. Her resmin üst kısmının siyah renkte solmasını istiyorum, böylece bazı beyaz metinleri kaplayabilirim.iOS, UIImageView

this gibi bazı yanıtlara baktım, ancak hiç çalışmıyor gibi görünüyor.

tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) ben denedim:

var imageView = UIImageView(image: image) 

var gradient: CAGradientLayer = CAGradientLayer() 
gradient.frame = imageView.frame 
gradient.colors = [UIColor.blackColor(), UIColor.clearColor()] 
gradient.locations = [0.0, 0.1] 
imageView.layer.insertSublayer(gradient, atIndex: 0) 

cell!.backgroundView = imageView 

Ama hiçbir gradyan ve degrade kodu kaldırdığınızda hiçbir fark görüyoruz. Benim gradyanım resmin altında mı oturuyor?

imageView.layer.mask = gradient ile imageView.layer.insertSublayer(gradient, atIndex: 0) numaralı satırı değiştirirseniz, hücrelerim boş ve beyazdır (artık görüntü yok).

+1

sana bağlı cevabın afiş olduğum . Lütfen not gradient.colors '' UIColor'' değil 'CGColor' içermelidir. – duci9y

+1

3k;) – jezrael

cevap

8

gradient.colors Bunu, CGColor dizisini olması gerekir:

Swift 3.0, bazı hafif ince ayarlar gerekli
gradient.colors = [UIColor.blackColor().CGColor, UIColor.clearColor().CGColor] 
+0

Oh, UIColors kullanıyordu değil mi? İyi yakalama. Onu özledim. –

3

Katmanlar dizisinin nasıl sipariş edildiğini unutuyorum. Ancak, addSubLayer'ı kullanarak değil, addSubLayer'ı kullanarak gradyan katmanınızın üstüne yeni katman eklemeniz gerekir: atIndex: Degrade katmanını diğer katmanın üstüne, böylece opak olmayan kısımların resim görünümünü kaplamasına izin vermesini istersiniz. Kendi bünyesinde

+0

Her ikisi de benim için kabul edilen cevaptan CGColor düzeltmesiyle çalışıyorum, ama evet, addSubLayer kesinlikle daha basittir. – Imran

2

:

let gradient: CAGradientLayer = CAGradientLayer() 
    gradient.frame = imageView.frame 
    gradient.colors = [UIColor.black.cgColor, UIColor.clear.cgColor] 
    gradient.locations = [0.0, 0.1] 
    imageView.layer.insertSublayer(gradient, at: 0)