2017-07-15 2 views
0

Ich arbeite an einem Stück Code, der Fläche auf einem UIView berechnen muss. Ich muss in der Lage sein, eine UIView zu nehmen und die Menge des verfügbaren Platzes zu bestimmen, UI Kontrollen zu setzen. Also, egal wie breit die UIView ist, vielleicht ist es 724pt, ich muss diesen Wert auf 100% umrechnen. Der Trick hier ist der Wert, in dem ich die Breite des UIView vom Typ Int retreiving bin. Dieser Wert ist repräsentativ für die Anzahl der Punkte, die UIView berechnet wird, nimmt in Bezug auf seine Superview auf, aber ich werde gebeten, dies in eine CGFloat zu konvertieren, die den Prozentsatz von negativen Platz innerhalb der UIView Superview um darstellt Entweder die am weitesten rechts gebundene, links am meisten gebundene oder beides ist Superview. Also, wenn ich die Ansicht um die Hälfte trennen wollte, würde ich einfach 100% (724) nehmen und 50% für die halbe Breite (362pt) zurückgeben. Dies müsste von einer Int in eine CGFloat umgewandelt werden.Swift 4: Konvertieren Sie einen beliebigen Zahlenwert in 100%

Was ich suche ist die Formel, wie dies 4. in Swift erreichen

+2

Das ist nicht Swift, das ist Geometrie. Für zwei Dimensionen, die der Rahmen einer Ansicht ist, ist die Breite mal Höhe (Quadratpunkte?). Wenn die Breite der Ansicht 724 ist, dann ist 724 ** ** 100%. Addiere die Teilansichtsbreiten, subtrahiere ihre Summe von 724 und was übrig bleibt, ist was du nicht benutzt hast. Wenn Ihre Subviews also insgesamt 362 sind, haben Sie 50% verwendet und 50% übrig gelassen. Mir fehlt offensichtlich etwas. Was? – dfd

Antwort

1

Sie brauchen nicht es diese kompliziert zu machen.

Wenn Sie 50% der Breite der Ansicht wollen, dann tun einfach:

let halfWidth = someView.frame.width * 0.5 

ersetzen 0.5 mit dem, was Prozentsatz Sie benötigen.

+0

@LeoDabus 'midX' gibt nicht die halbe Breite, es gibt die Position der Mitte des Rahmens an. Für einen Rahmen mit x von 100 und einer Breite von 300 wäre midX 250, während Breite * 0,5 offensichtlich 150 ist. – rmaddy

+0

@LeoDabus Das ist ein Spezialfall. Und die Frage scheint 50% als nur ein Beispiel zu geben. – rmaddy

+0

Danke für die Antwort @rmaddy. So einfach es scheint, ich glaube, Sie sind auf dem richtigen Weg. Und das liegt wahrscheinlich daran, dass mein Geist wie eine Brezel gewickelt ist, die jetzt darüber nachdenkt und die Lösung mir entgeht. Wenn meine Anforderung, ein kompliziertes Stück UI zu gestalten, nicht alles im Code beinhaltet und trotzdem die Änderung der Ausrichtung übernimmt, würde ich das automatische Layout verwenden und damit fertig sein. Aber Geometrie war nie großartig. Und ich entschuldige mich für die schnell geschriebene Frage. Es schien meine etwas komplexe und schwer zu beschreibende Frage nicht vollständig zu erklären. Ich habe meine Frage bearbeitet. –

Verwandte Themen