Eine UIView mit diagonalen Linien füllen?

8

Wie man ein UIView so füllt (mit einigen diagonal gezeichneten weißen Linien).

PS: Meine Absichten sind über die Füllung nicht die Grenze.

Irgendwelche Hilfe?

    
Goppinath 02.03.2016, 14:51
quelle

3 Antworten

12

Eine Möglichkeit, dies zu erreichen, wäre, die draw(_:) -Methode von UIView zu überschreiben und dort Ihre benutzerdefinierte Zeichnung auszuführen.

Das Zeichnen diagonaler Linien ist ziemlich einfach, Sie müssen nur:

  • Stride von 0 bis Breite + Höhe (entlang der horizontalen Kante der Rect, dann die vertikale), durch die Lücke + Linienbreite, konvertiert von einer diagonalen (in 45º) Länge parallel zu sein Rand des Rect zu zeichnen.

  • Zeichnen Sie bei jeder Iteration eine Linie von dem gegebenen Punkt für diese Iteration zu dem Punkt an der gegenüberliegenden Kante (bei 45º). Wir bekommen diesen Punkt, indem wir einfach die vertikale Kante des Rect bearbeiten, dann entlang der horizontalen)

So etwas sollte das gewünschte Ergebnis erzielen:

%Vor%

Ausgabe:

(Angenommen, die Ansicht hat ein rotes backgroundColor )

Sie können die Eigenschaften lineGap und lineWidth anpassen, um unterschiedliche Ergebnisse zu erzeugen.

    
Hamish 05.03.2016, 22:45
quelle
7

Erstaunlich einfacher Algorithmus ...

Sagen Sie, Sie haben diese Werte ...

%Vor%

Erstaunlicherweise ist es so einfach ...

%Vor%

Hier ist eine vollständige UIView-Klasse:

%Vor%

Das ist es!

Der gesamte fundamentale Algorithmus:

1. Beginnen Sie oben links, minus der längsten Seite

2. zeichne Diagonalen, bis du nach rechts kommst

Schön und einfach! :)

Um ein Rechteck zu schneiden:

Die obige Klasse zeichnet sie einfach als "Größe der UIView". Oft möchten Sie eine Anzahl der "Kästchen" tatsächlich in der Ansicht an verschiedenen Koordinaten zeichnen. (Ein gutes Beispiel ist für einen Kalender).

Außerdem zeichnet dieses Beispiel explizit "beide Streifen", anstatt einen Streifen über die Hintergrundfarbe zu zeichnen:

%Vor%

Wenn Sie sie animieren möchten, bewegen Sie sich ...

1, Zum Versetzen ziehen Sie den Zeiger einfach ab, wenn Sie ihn starten. Erstaunlicherweise muss nichts geändert werden.

%Vor%

2, Vorsichtige Programmierer bevorzugen einen Offset gleich der Gehrung , um das Problem der "spitzen linken Ecke" zu vermeiden:

%Vor%

3, Sie können eine beliebige Anzahl von Streifen in verschiedenen Farben verwenden, und tatsächlich können Sie unterschiedliche Streifenbreiten in beliebiger Kombination verwenden. Erstaunlicherweise funktioniert der Algorithmus immer noch und ist sicher. (Wenn Sie mehr als eine Breite haben, stellen Sie einfach die Gehrung m als maximale Breite ein.)

    
Fattie 21.07.2017 02:47
quelle
-3

Der einfachste Weg für mich ist, ein Hintergrundbild in Ihre UIView zu schreiben ( so ). Die zweite Lösung besteht darin, die Linien mit Core Graphics Framework zu zeichnen (effizienter, aber mehr Code zum Schreiben).

Hoffe diese Hilfe!

    
Vinestro 02.03.2016 15:09
quelle

Tags und Links