2012-04-02 4 views
1

Ich versuche sicherzustellen, dass meine UILabels und UITextView scharf bleiben, wenn sie in einem UIScrollView existieren. Ich habe die 'contentScaleFactor'-Eigenschaft in der UIView-Klasse gefunden, sie scheint bei benutzerdefinierten Zeichnungen einwandfrei zu funktionieren, aber UITextViews und Labels verweigern die Neuzeichnung auf der rechten Inhaltsskala.ContentScaleFactor auf UIKit Elemente gebrochen?

http://pastebin.com/PBjhjMbR

Vielleicht ist dies aufgrund, dass die tatsächlichen Ansichten, die den Text ein Subview dieser Klassen ziehen?

Antwort

1

Sie müssen contentScaleFactor rekursiv für alle Untersichten festlegen und auch setNeedsDisplay für jede Ansicht aufrufen, für die Sie sie festgelegt haben, damit sie mit höherer Qualität angezeigt wird. Ich habe auch festgestellt, dass es sich nicht lohnt, es auf einem UIImageView zu setzen, weil sie sowieso nicht mit höherer Qualität rendern werden, also hat es keinen Sinn, Speicher zu verschwenden, indem man ihre Rückschichten größer macht.

+0

das ist kein Weg, den Apple erlauben würde, außerdem ist es nicht so einfach, die Textschicht irgendwo in der Textansicht zu finden. Ich habe auf der WWDC gefragt, ob ich einen Fehler melden soll, sie hatten auch keine Ahnung. – M0rph3v5

+0

Entschuldigung für die späte Antwort, aber die Methode, die ich oben gegeben habe, ist genau das, was mir auf der WWDC von einem Apple-Techniker gesagt wurde. Die App, in der ich sie benutzt habe, ist bereits im App Store, also erlaubt Apple es tatsächlich (warum nicht? Es ist eine öffentliche API). Das einzige Problem, das ich damit hatte, ist, dass es nicht mit Text funktioniert während sie bearbeitet werden (zB während die Tastatur hochgefahren ist). Aus irgendeinem Grund setzt etwas in diesem Fall den contentScaleFactor der entsprechenden Ansicht auf den Standardwert zurück, und ich konnte nicht herausfinden, wie ich ihn so spät einstellen kann, dass er richtig funktioniert. –

+0

Das ist der springende Punkt meines Problems, aber im nicht bearbeiteten Zustand zeige ich nur meine eigene Ansicht mit der richtigen Inhaltsskala. Der Bearbeitungszustand ist das Problem. – M0rph3v5