2016-04-06 24 views
0

çizim değil bir görünüme dayalı tableView özelleştirmek ve özelleştirmek NSView içinde, ben init yazın:CAShapeLayer problemleri - NSTableView

NSRect testRect = imageViewRect; 

CGMutablePathRef roundPath = CGPathCreateMutable(); 
CGPathAddArc(roundPath, NULL, 
      [self arcCenter:testRect].x, 
      [self arcCenter:testRect].y, 
      ArcRadius, 
      2 * M_PI + M_PI_2, 
      M_PI_2, 
      YES); 

self.backgroundLayer = [CAShapeLayer layer]; 
self.backgroundLayer.frame = testRect; 
self.backgroundLayer.path = roundPath; 
self.backgroundLayer.strokeColor = [[NSColor blueColor] CGColor]; 
self.backgroundLayer.fillColor = nil; 
self.backgroundLayer.lineWidth = 5.0f; 
self.backgroundLayer.lineJoin = kCALineJoinBevel; 
[self.layer addSublayer:self.backgroundLayer]; 
[self.backgroundLayer setFillColor:[NSColor yellowColor].CGColor]; 

ancak katman gösterilmez, gerçekten bilmiyorum sorun nerede.

Bunu bir görünümde yazdım ve görünümü bir pencereye yükledim, katman doğru şekilde gösterildi.

cevap

1

Görünümünüzü 'kendi' katman destekli görünümüne çevirdiniz mi? Eğer herhangi bir katman ilgili manipülasyon yapmak için önce

self.wantsLayer = true

söylemek gerekir.

documentation aktaran - true bu özelliğin değerinin

içine görünümü döner bir katman destekli view-yani, görünüm onun render içerik yönetmeye CALayer nesnesi kullanır. Katman destekli bir görünüm oluşturmak, örtük olarak katlanmak için bu görünümün altındaki tüm görünüm hiyerarşisini dolaylı olarak neden olur. Böylece, görünüm ve tüm alt görünümleri ( alt görünümlerinin alt görünümleri dahil) katman destekli hale gelir. Bu özelliğin varsayılan değeri yanlıştır.

+0

Çok teşekkürler, gerçekten bana yardım ediyorsunuz, işe yarıyor. Ama benim demomda görünümü ayarlamak istemedimLayer Evet, ve varsayılan o değil, neden çalıştı? – melody5417

+0

Yardımın için teşekkürler, kabul edilen cevabı işaretlemek için çek'e tıklamam gerektiğini biliyorum. – melody5417