2016-12-16 2 views
0

J'essaie d'utiliser le code suivant pour obtenir la couleur de premier plan d'un NSTextView. Malheureusement, je reçois une erreur d'exécution qui doit être liée aux espaces colorimétriques concernés. Comment puis-je résoudre suisImpossible d'obtenir la couleur de premier plan de NSTextView

if let textStorage = textView.textStorage { 
    let rowObj = textStorage.paragraphs[row] 
    let range = NSMakeRange(0, rowObj.string.characters.count) 
    colorOrRowBeforeSelection = rowObj.foregroundColor!     
    if(rowObj.foregroundColor != nil) { 
     let r = rowObj.foregroundColor!.redComponent 
     let g = rowObj.foregroundColor!.greenComponent 
     let b = rowObj.foregroundColor!.blueComponent 
    } else { 
     Log.e("cannot get foreground color components") 
    } 
} else { 
    Log.e("textStorage = nil") 
}  

Je reçois l'erreur d'exécution suivante:

[General] *** invalid number of components for colorspace in initWithColorSpace:components:count:

Répondre

0

je l'ai fait travailler avec les éléments suivants:

let components = UnsafeMutablePointer<CGFloat>.allocate(capacity: 4) 
rowObj.foregroundColor!.getComponents(components) 
let c = NSColor(colorSpace: NSColorSpace.sRGB, components: components, count: 4) 
components.deinitialize() 
components.deallocate(capacity: 4) 
let r = c.redComponent 
let g = c.greenComponent 
let b = c.blueComponent 

EDIT: J'ai fait une solution sur la mémoire manipulation, maintenant le code fonctionne, sauf le fait qu'il tourne ce qui devrait être blanc (dans le espace de couleur grise) en jaune ... j'espère que quelqu'un peut résoudre ce problème.