2017-07-28 13 views
1

Ich versuche, eine UITextField zu zentrieren und das ist mein Code:Zentrum ein UITextField

import SpriteKit 
import GameplayKit 
import UIKit 

class GameScene: SKScene { 

var sampleTextField = UITextField() 

override func didMove(to view: SKView) { 

    let mainView = UIView(frame: CGRect(x: 0, y: 0, width: self.size.width, height: self.size.height)) 

    view.addSubview(mainView) 

    sampleTextField = UITextField(frame: CGRect(origin: mainView.center, size: CGSize(width: 200, height: 20))) 

    sampleTextField.placeholder = "Enter text here" 
    sampleTextField.font = UIFont.systemFont(ofSize: 15) 
    sampleTextField.borderStyle = UITextBorderStyle.roundedRect 
    sampleTextField.autocorrectionType = UITextAutocorrectionType.no 
    sampleTextField.keyboardType = UIKeyboardType.default 
    sampleTextField.returnKeyType = UIReturnKeyType.done 
    sampleTextField.clearButtonMode = UITextFieldViewMode.whileEditing; 
    sampleTextField.contentVerticalAlignment = UIControlContentVerticalAlignment.center 

    mainView.addSubview(sampleTextField) 
    } 

} 

Aber die UITextField nicht erscheint, weil ich denke, dass es außerhalb des Bildschirms ist, so wie könnte ich es Zentrieren in der Bildschirm?

+0

Ich habe noch nie mit SpriteKit gearbeitet, aber verwenden Sie in Ihrem Code Autolayout? –

+0

Nein Ich verwende kein automatisches Layout –

+0

Vielleicht können Sie die Funktion didMove() überprüfen, setzen Sie einen Debug-Zeiger am Anfang der Funktion und überprüfen Sie die Größe des SKView, vielleicht zu der Zeit, dass diese Funktion aufgerufen wird, die SKView nicht war richtig angelegt. –

Antwort

1

Versuchen Center-Methode: -

sampleTextField.center = CGPoint(x: value1, y: value2) 
+0

Aus irgendeinem Grund, wenn ich den Mittelpunkt auf x: 300, y: 550 setze, erscheint das TextField in der rechten unteren Ecke, wenn die Größe des Bildschirms wirklich 750 in der Höhe und 1334 in der Höhe ist. Warum passiert das? –

+1

Können Sie das view.center nicht übergeben? Wenn Sie das Textfeld nur in Ihrer Ansicht zentrieren möchten? –

+0

Ja, ich weiß nicht, warum ich das nicht versucht habe, danke –

1

statt ..

sampleTextField = UITextField(frame: CGRect(origin: mainView.center, size: CGSize(width: 200, height: 20))) 

dies tun ..

sampleTextField = UITextField(frame: CGRect(origin: CGPoint(x: mainView.center.x - 100, y: mainView.center.y - 10), size: CGSize(width: 200, height: 20))) 

Die orgin eines CGRect ist immer oben links Ecke. Sie müssen die Hälfte der Breite und Höhe des Mittelpunkts subtrahieren.