2017-07-28 35 views
1

我試圖居中的UITextField,這是我的代碼:中心的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) 
    } 

} 

不過的UITextField不會出現,因爲我認爲這是屏幕的外面,所以我怎麼能中心,它在屏幕?

+0

我從來沒有使用過SpriteKit,但是你在代碼中使用autolayout嗎? –

+0

不,我沒有使用自動佈局 –

+0

也許你可以檢查didMove()函數,在函數的開頭放一個調試指針並檢查SKView的大小,也許在調用該函數時,SKView沒有尚未妥善佈置。 –

回答

1

嘗試使用中心法: -

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

由於某些原因,當我將中心設置爲x:300,y:550時,屏幕大小真的是750高度和1334高度時,TextField會出現在右下角。爲什麼會發生? –

+1

難道你不能通過view.center ??如果你只想在你的視圖中居中文本? –

+0

是的,我不知道爲什麼我沒有嘗試,謝謝 –

1

而不是..

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

做..

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

一個CGRect的淵源考總是在左上角角。您需要減去中心點的寬度和高度的一半。