2016-06-29 19 views
1

Ich versuche eine Ansicht zu erzielen, in der Bilder am Rand des Kreises platziert werden. Ich habe versucht, es mit CAShapeLayer zu machen und UIImageViews hinzugefügt, aber ich möchte es dynamisch erstellen. Jede Hilfe wird geschätzt. Ich füge ein Bild zum Beispiel hinzu.Bilder in Kreisansicht mit Rotation in IOS setzen

enter image description here

Antwort

2

Ich würde vorschlagen, dass Sie diese answer von @rob_mayoff

gegeben beziehen Sie sollten einen kreisförmigen Bezierpfad mit dem Bild erstellen Sie nicht display.Please möchten, dass diese Methode, wenn Sie funktioniert nur wollen um das gleiche Bild gleichmäßig auf dem Kreis zu verteilen. Wenn Sie möchten, dass das Bild gleichmäßig auf dem Kreis verteilt wird, sollten Sie sich mehr anstrengen.

Sie können auf zwei Arten versuchen:

  1. jeden Kreis Bezierpfad Zeichnen von ihren Zentren zu berechnen. Und ordnen Sie sie kreisförmig an. Du solltest ein wenig Mathe machen. Bitte beachten Sie, dass Sie den Mittelpunkt (x, y) für den Hauptkreis haben und die Unterkreise so um den Mittelpunkt (x, y) legen, dass der Abstand von jedem Unterkreismittelpunkt zum Hauptkreismittelpunkt gleich sein sollte . Um die genauen Koordinaten von Linien zu erhalten, die den Kreis teilen, beziehen Sie sich bitte auf die answer. Sobald Sie die genaue Koordinate erhalten haben, können Sie den Unterkreis an diesen Positionen platzieren.

Ich werde versuchen, eine grobe Vorstellung zu geben, dies zu tun:

Betrachten Sie einen Hauptkreis haben, dessen Mittelpunkt bei (x0, y0). Und Sie möchten Bilder auf diesem Kreis platzieren, indem Sie den Kreis in "n" Teile teilen. so dass Sie eine Anzahl von Bildansichten auf diesem Hauptkreis platzieren können. Die 'n' Teile sind im unteren Bild mit grünen Linien gekennzeichnet.

Der Winkel zwischen jedem der grünen Linien 360 Grad ist/n

Nein müssen wir den Endpunkt der jeweiligen grünen Linie. Welches erhalten werden kann von:

sub.x = x0 + r * cos(angle); 
sub.y = y0 + r * sin(angle); 

wobei r der Radius des Hauptkreises ist.

Dies ist für einen Teilkreis. In yoour Fall haben Sie ‚n‘ Anzahl der Unter Kreise, also lassen Sie uns eine Schleife tun alle Unterkreismittelpunkte zu erhalten:

 for(i = 1 to n) 
     { 
      angle = i * (360/n); 
      sub.x = x0 + r * cos(angle); 
      sub.y = y0 + r * sin(angle); 
     } 

enter image description here

Jetzt können Sie einen kreisförmigen Bezierpfad an jedem der zeichnen ' n‘sub (x, y) Punkte

die addArcWithCenter:center mit dem Zentrum die berechnete Unter wäre (x, y)

  1. ich glaube 1 ist wieder der beste Weg, wenn Sie möchten alles dynamisch machen y.
+0

ok, werde ich diese Antwort versuchen, aber können Sie mir sagen, was ist x0 und y0 und wie kann ich seinen Wert –

+2

x0 erhalten und y0 ist der Wert der Mitte des Kreises –

+0

ok ich dachte, ich habe um einen Winkel dafür zu finden. –