Negative Textfarbe in Bezug auf das Hintergrundbild

8

Ich versuche eine Unterklasse zu erstellen (weil das wahrscheinlich der einfachste Weg ist). UILabel also ist Text Farbe negativ für den Teil des Hintergrundbildes, der überlagert wird. Ich habe auch eine ungefähre Idee, wie man das macht, aber kann es nicht in Code umwandeln.

Parameter zum Übergeben der Unterklasse

  • Hintergrundbild
  • Position des UILabel im Hintergrundbild (wahrscheinlich CGRect, da es das x, y, w, h des Hintergrundbildes kennen muss, das das UILabel abdecken wird) - das könnte auch nur das UILabel rect sein, wie es das UILabel tun wird Sei die Unteransicht einer UIImageView, die das Hintergrundbild enthält.

Logik beim Zeichnen des Etiketts

  1. Erstellen Sie eine Maske mit dem Text - der Inhalt der Maske wäre nur der Text selbst, nicht der Hintergrund.
  2. Den spezifischen Teil (rect) des Hintergrundbildes, der mit dem Label überlagert ist, ausschneiden.
  3. Löschen Sie das gesamte Bild außerhalb der Textmaske (oder machen Sie es transparent) - & gt; So bleibt nur das Bild übrig, wo der Text ist, der Rest wäre weg.
  4. Invertiere die Farben des Bildes (mit ) Methode wahrscheinlich) oder kCGBlendModeDifference in irgendeiner Weise vielleicht verwenden?
  5. Zeichnen Sie all das in einer der Methoden von UILabel drawRect oder drawTextInRect .

Verwendung

Die Verwendung von dies wäre wahrscheinlich so etwas wie

  1. Alloc und UIImage
  2. Anzeige in UIImageView
  3. Erstellen Sie die Unterklasse UILabel mit der invertierten Textfarbe relativ zu dem Teil des Bildes, in dem UILabel in
  4. platziert wird
  5. Fügen Sie UILabel als Unteransicht von UIImageView hinzu.

Probleme, die dies haben könnte

Ich kann nicht sagen, wie schnell dies beim Scrollen sein wird, aber dies könnte gelöst werden, indem der Text direkt in UIImage gezeichnet wird, da er statisch ist. Wenn das UIImageView , das die Beschriftung enthält, in ein UIScrollView eingefügt würde, würde es bei jedem Scroll neu gezeichnet werden?

Vielen Dank im Voraus!

    
Martin Herman 22.09.2013, 20:12
quelle

1 Antwort

0

Überprüfen Sie die Antwort auf meine Frage aus: drawRect zeichnen 'transparent' text

Es gibt eine Reihe von Antwort, die ein großen Open-Source-Projekt, das Sie von Robin Alter verwenden kann.

Viel Spaß!

    
runmad 24.09.2013 03:59
quelle