2016-08-03 60 views
0

Dies ist das Layout, das ich erreichen möchte.iOS - So positionieren Sie eine in einem bestimmten Bereich auf einem Hintergrundbild fixierte Ansicht

enter image description here

Ich mag die runde gelbe Taste in dem kleinen kreisförmigen Bereich des Hintergrunds in jedem iPhone positionieren. Der kreisförmige Bereich ist in diesem Bild nicht zentriert.

Dies ist so weit, was ich versuchte:

  • Zuerst habe ich eine UIView mit 1px x 1px, transparenter Hintergrundfarbe zum Zentrum des gesamten Layouts hinzugefügt. Ich nenne das den Mittelpunkt
  • Dann werde ich den vertikalen Abstand zwischen Mittelpunkt und der gelben Taste einstellen.
  • Ich werde auch führende Einschränkung zwischen der gelben Schaltfläche und der Super-Ansicht festlegen.
  • Dann werde ich das Seitenverhältnis einstellen (gelbe Tastenbreite auf gelbe Tastenhöhe).
  • Ein anderes Seitenverhältnis (gelbe Taste zum Hintergrundbild).

Aber das Ergebnis ist wirklich nicht das, was ich erwarte, dass es sein sollte. Es ist in Ordnung, wenn das Hintergrundbild verzerrt ist, möchte ich nur die gelbe Taste im kreisförmigen Bereich des Hintergrundbildes bleiben.

Danke!

Antwort

1

Um den Kreis relativ zum Hintergrund, setzte eine Einschränkung die Hinterkante des Kreises mit der Hinterkante der Bildansicht auszurichten, und dann den Multiplizierer auf einen geeignetes Wert wie 214:640. Dies bewirkt, dass sich der Kreis um den richtigen Betrag nach rechts bewegt, wenn die Bildschirmgröße zunimmt.

Gleichermaßen richten Sie den Kreis unten auf die untere Bildansicht aus und stellen Sie den Multiplikator auf einen geeigneten Wert wie 478:900 ein. Dadurch wird der Kreis ausgerichtet, wenn der Bildschirm größer wird.

Spielen Sie mit den Verhältnissen, bis sie auf einer Telefongröße (wie dem iPhone 5S) gut aussehen, dann werden sie für die 6S und 6S Plus funktionieren.

Stellen Sie die Kreisbreite auf die Breite der Bildansicht ein und setzen Sie den Multiplikator auf 100:320.

0

Ich würde nicht so weit gehen, ich würde einen Knopf machen, der den gesamten Bildschirm passt, das Knopfbild einstellen, um das ganze Bild einschließlich des gelben Kreises zu sein. Dann ähnlichen Code verwendet unten:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch = [touches anyObject]; 

    // Get the specific point that was touched 
    CGPoint point = [touch locationInView:self.view]; 
    if (point.x * 100/parentView.width in range (0-100) && point.y*100/parentView.heiht in range (0-100)){ 
     // write your button event handler here. 
    } 

} 
+0

Hmm, was ist, wenn ich noch andere Tasten habe, die in einem bestimmten Punkt positioniert sein müssen (eigentlich habe ich). Es gibt andere Knöpfe, die über den Linien positioniert werden müssen. Entschuldigung, das habe ich nicht erwähnt. Also, indem Sie tun, was Sie gerade gesagt haben, ich muss nur ein Bild mit allen Tasten anfertigen, und nur die Berührungspunkte erkennen. Aber ist es nicht auch ein Problem, die Berührungspunkte richtig zu erkennen? –

+0

Sie müssen sich Gedanken darüber machen, wie die Anwendung aussieht, und dann können Sie in Ihrem Code anhand der Breite und Höhe der übergeordneten Elemente die Region jeder Schaltfläche leicht finden. Ich werde meine Antwort für Sie bearbeiten. –

+0

Ich habe die Antwort so geändert, dass Sie nur den Bereich des Prozentsatzes angeben können, den Ihre Schaltflächen in vertikaler und horizontaler Richtung abdecken würden. Das sollte jetzt einfach sein –