2016-12-01 2 views
0

Som im Arbeiten mit einer chart framework und ich habe eine Ansicht namens lineChartView. Ich wollte sehen, seine frame/bounds so habe ich versucht,Ansicht Rahmenfarbe: Warum muss ich durch 'Schicht' gehen

lineChartView.borderLineWidth = 1 
    lineChartView.borderColor = .red 

Das hat nicht funktioniert, aber ich fand einen Code, damit es funktioniert:

lineChartView.layer.borderWidth = 1   
    lineChartView.layer.borderColor = UIColor.red.cgColor 

Was ist der Zweck von layer ist und warum wird nicht das erste Stück Code arbeiten?

Antwort

0

Meistens lange Geschichte. NSView (Mac) hatte ursprünglich keine Ebenen. Ein "Layer" ist ein GPU-verbesserter Canvas; Es gab eine Zeit, bevor GPUs omnipräsent waren, Animationen wurden von NSTimer ausgeführt, und Dinosaurier durchstreiften die Welt. Sie haben Layer in 10.5 als Teil von Core Animation hinzugefügt (was meistens "GPU-beschleunigtes Zeug" ist), aber Sie mussten nach ihnen mit wantsLayer fragen. Ebenen haben Funktionen wie automatische Ränder und abgerundete Ecken sowie viele andere Funktionen mitgebracht, aber wenn Sie das nicht benötigen, können Sie weiterhin einen Standard NSView verwenden. Als sie UIKit schrieben, bauten sie es auf die existierende Kernanimation CALayer auf, machten alle Ansichten layer-backed und generalisierten im Allgemeinen eine Menge Sachen von NSView, aber sie änderten nicht grundlegend die Aufteilung der API zwischen Ansicht und Schicht. Sie könnten eine ganze Reihe von Pass-Through-Wrapper-Methoden hinzugefügt haben (view.borderColor ->view.layer.borderColor), aber das taten sie nicht.

+0

Okey cool danke Rob! Also versuche ich mich am besten an das Layerstuff zu erinnern und lege einfach .layer. zwischen? Auch wenn ich keine .layer benutze. Der Befehl wird noch ausgeführt, aber er hat keine Funktion? Oder gibt es etwas, das eine Rahmenfarbe erhält, die nur nicht angezeigt wird? –

+0

'lineChartView.borderLineWidth = 1 'sollte nicht einmal kompilieren. Es sollte also ziemlich klar sein, wenn Sie '.layer' hinzufügen müssen. Nach ein wenig Erfahrung werden Sie sich wahrscheinlich daran gewöhnen, welche Dinge sich in der Ansicht befinden und welche sich auf der Ebene befinden. Es ist nicht völlig zufällig. "Dekorationen" sind in der Regel auf der Ebene. –

+0

Okey cool Ich behalte das im Hinterkopf! Danke Rob :) –

Verwandte Themen