2012-10-29 14 views
7

W mojej aplikacji chcę zapewnić skalowanie tekstu w warstwowym widoku NSTextView, takim jak TextEdit firmy Apple. Używam analogu tego, ScalingScrollView. Również muszę utworzyć kilka nakładek CALayer na self.window.contentView. Wszystko jest ok, dopóki nie wykonam [self.window.contentView setWantsLayer:YES].CALayer, NSTextView i skalowanie

Przed [setWantsLayer:YES]

enter image description here

Po [setWantsLayer:YES]

enter image description here

nie mam żadnych pomysłów, jak rozwiązać ten problem.

Odpowiedz

6

Szukałem również rozwiązania podobnego problemu. Na koniec odkryłem, że widoki z warstwami muszą być umieszczone na zintegrowanych pikselach i nie mogą być umieszczone na subpikselach.

E.g. jeśli dynamicznie obliczyć klatkę warstwy-backed widok

NSMakeRect((self.frame.size.width - 350)/2, (self.frame.size.height - 150)/2, 350, 150) 

można napotkać wartości niezintegrowanych, więc należy zrobić coś jak

NSMakeRect(floor((self.frame.size.width - 350)/2), floor((self.frame.size.height - 150)/2), 350, 150) 
+1

Boga, jesteś wielki! Niestety, to pytanie straciło aktualność, ale twoje rozwiązanie jest tak eleganckie. Dzięki! – Akki