2013-08-16 5 views
12

Also, ich habe ein paar UILabels und UITextViews in einer Zelle. Meine Tabelle scrollte ein wenig langsam und ich probierte das "Color blending layers" -Dienstprogramm, das in iOS-Simulator und Instrumenten verfügbar ist. In rot werden die Ebenen angezeigt, die sich vermischen und das langsame Scrollen verursachen.UITextView mit weißem Hintergrund, der als Farbe Blended Layer in Instrumenten und Simulator zeigt

Alle Elemente wurden gemischt, also legte ich einen weißen Hintergrund auf die UILabels (wie die Zelle) und jetzt sind die UILabels in Ordnung (sie hatten ClearColor als Hintergrund).

Ich machte das gleiche mit den UITextViews, ich wählte weißen Hintergrund, aber sie werden immer noch im Bildschirm als Mischschichten (in rot) angezeigt.

Jede UITextView-Konfiguration wird im Interface Builder durchgeführt, ich habe es mit jeder Option versucht, aber sie erscheint immer noch rot.

Was muss ich mit den UITextViews tun, damit ihre Layer nicht ineinander übergehen?

Vielen Dank im Voraus!

PD: Sorry, aber ich kann nicht erfasst

Antwort

7

Nun gehören, ist die UITextView eine erweiterte Ansicht, die rollbaren ist und benutzerdefinierte Textformatierung unterstützt, ist es, so dass Sie nicht auf ‚nicht vermischen‘ möglicherweise in der Lage zu bekommen. Bei anderen Ansichten sollten Sie das Kontrollkästchen opaque aktivieren, aber ich bezweifle, ob das in diesem Fall funktioniert.

Ihre beste Wette wäre, stattdessen ein UILabel zu verwenden. Sie können es durch ein UITextView ersetzen, wenn der Benutzer ein Feld bearbeiten muss, aber UILabel beim Scrollen verwenden sollte die Geschwindigkeit erheblich verbessern.

+0

Das ist, was ich getan habe, ich ersetzt jedes UITextView mit einem UILabel und jetzt funktioniert die Schriftrollen gut :) Danke! – saky

+0

Das UILabel unterstützt jedoch keine Berührungsereignisse der URL. –

17

Ich hatte auch mit diesem Problem zu kämpfen. Ich habe eine UITableView, die auf dem iPhone gut scrollte, aber auf dem iPad nur wie verrückt wackelte. Ich habe Color blending layers in Instruments eingeschaltet und, wie Sie sagten, es scheint opaque = YES; und backgroundColor = [UIColor whiteColor]; haben keine Wirkung.

Bob ist auch richtig, UILabels sind leistungsfähiger. Meine Implementierung basiert jedoch auf Ausschlusspfaden, die aufgrund des freigelegten TextKit-Stapels nur in UITextView verfügbar sind. Ich konnte nicht nur UILabel verwende so aus Verzweiflung habe ich versucht, diese und die rote auf meinem UITextViews verschwunden:

for (UIView *subview in textView.subviews) { 
    subview.backgroundColor = theme.post.backgroundColor; 
} 

Ich weiß, dass dies eine alte Frage, aber ich habe den größten Teil des Tages Debuggen dafür ausgegeben. Ich hoffe, dass andere Leute es nützlich finden.

+0

Wo stellst du das hin? –

+1

Dies hat die Blended-Layer aus meiner Textansicht entfernt. Ich habe diese Schleife in meinem Initialisierer hinzugefügt. –

Verwandte Themen