ich verwende Xcode 8.2, Swift 3.Wie funktioniert das Layout der iOS-Bildschirmgeometrie?
Ich versuche programmatisch eine UIViewController
mit einigen Text (und in Zukunft einige Grafik) Inhalt auf dem Bildschirm zu erstellen. Normalerweise wäre das mit dem Storyboard recht einfach, aber da dieser ViewController programmatisch erstellt wird, muss ich so arbeiten.
Hier ist mein Code so weit:
let detailViewController = UIViewController()
detailViewController.view.backgroundColor = UIColor.white
let screenSize = UIScreen.main.bounds
let screenWidth = screenSize.width
let screenHeight = screenSize.height
let titleLabel = UILabel(frame: CGRect(x: 20, y: 20, width: screenWidth, height: 20))
titleLabel.center = CGPoint(x: screenWidth/2, y: 100)
titleLabel.backgroundColor = UIColor.red
titleLabel.textAlignment = .center
titleLabel.text = "Scan Results"
titleLabel.font = UIFont.boldSystemFont(ofSize: 14)
let myField: UITextView = UITextView (frame: CGRect(x: 50, y: 50, width: screenWidth, height: 300))
myField.center = CGPoint(x: screenWidth/2, y: 250)
myField.backgroundColor = UIColor.green
myField.text = <really long string here>
detailViewController.view.addSubview(titleLabel)
detailViewController.view.addSubview(myField)
Und das ist, was ich sehe:
Dies viele Fragen für mich stellt sich, wie ich, wie dies zu verstehen versuche, Layout funktioniert, kann aber keine Hilfe finden, die für mich Sinn macht.
Meine screenWidth
und screenHeight
ist 375 und 667 jeweils. Ich benutze ein iPhone 7. Ich habe meine titleLabel
in der Mitte aber unter y: 100
positioniert. Aber wo das Etikett endete, sieht nicht wie 1/6 des Weges nach unten aus, da die Höhe des Bildschirms 667 ist.
Wie funktioniert also die textuelle Positionierung? Ich weiß, dass die obere linke der Ursprung ist, aber das ist es auch.
Auch starte ich mein Textfeld bei x: 50, y: 50
mit einer Breite von screenWidth
. Also, warum fließt der Text von der Seite der Seite über, anstatt herum zu wickeln?
Vielen Dank für jede Hilfe.
Ändern Sie die Farbe des Hintergrunds Ihres Etiketts, so dass Sie sehen können, was besser läuft. Wenn das Label den gesamten leeren Platz einnimmt, dann ist das etwas das richtige Verhalten, Text befindet sich immer in der vertikalen Mitte des Labels, und es ist wahrscheinlich nur eine einzige Zeile gesetzt. – Fonix
oh warte, warum ist myField ein ' UITextFeld'? willst du ein 'UITextView' verwenden? – Fonix
Gutes Auge. Lassen Sie mich diese Änderungen vornehmen und meine Frage aktualisieren. – noblerare