Dies ist eine Fortsetzung der Erste CGRect für Text in einem UITextView zum Hervorheben mit einem CALayer . Ich habe Probleme mit dem richtigen Rechteck für die Bereiche in jedem Zeilenfragment.
%Vor%Das ist mein aktueller Versuch. Ich verwende grundsätzlich enumerateLineFragmentsForGlyphRange: usingBlock: um durch jede Zeile. Dann bin ich mit enumerateEnclosingRectsForGlyphRange: withinSelectedGlyphRange: usingBlock: um sicherzustellen, dass der Bereich des Textes in der aktuellen Zeile passt sich mit dem Bereich Linie und hat die gleiche Y-Koordinate. Manchmal funktioniert das und manchmal nicht.
Es scheint, dass wenn der Suchtext in der Nähe einer Rückkehr ist, er den Highlight-Weg abzieht. (die y-Koordinate).
In diesem Screenshot "Gibt den Bereich der generierten Zeichen zurück" soll hervorgehoben sein.
Es scheint, wenn der Text nicht in der Nähe eines Rückgabe- oder Whitespaces ist, funktioniert dies korrekt:
Vermisse ich etwas?
UPDATE:
ich das Problem ein wenig nach unten verengt haben, glaube ich enumerateLineFragmentsForGlyphRange: usingBlock: wird Linien überspringt die Renditen
.Ich habe die Lösung gefunden:
Anstatt enumerateEnclosingRectsForGlyphRange zu verwenden: Ich verwende die NSString-Methode enumerateSubstringsInRange: options: usingBlock:
Ich zähle die Zeilenfragmente wie gewöhnlich auf, aber statt zu versuchen, die einschließende rect-Enumerationsmethode zu verwenden, nummeriere ich jedes Zeichen in der Zeile, während ich das rect für die Ebene erstelle.
%Vor%}
Ich arbeite immer noch an mehreren Übereinstimmungen, ich werde den Code aktualisieren, sobald das funktioniert.
Tags und Links ios nslayoutmanager textkit nstextcontainer