web-dev-qa-db-ja.com

UILabelをSwiftの中央に配置する方法は?

テキストを中央に配置しようとしていますが、機能していないようです。

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.


        let title = UILabel()
        title.text = "Some Sentence"
        title.numberOfLines = 0
        title.frame = CGRectMake(self.view.bounds.size.width/2,50,self.view.bounds.size.width, self.view.bounds.size.height) // x , y, width , height
        title.textAlignment = .Center
        title.sizeToFit()
        title.backgroundColor = UIColor.redColor()
        self.view.addSubview(title)

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

}

それは私が使用しているコードですが、これは私が得るものです:

enter image description here

画面の中心ではありません。誰かが私が間違っていることを教えてもらえますか?

27
elpita

UILabelを中央に配置するには、この行を追加するだけです

xおよびy:

title.center = self.view.center

x:

title.center.x = self.view.center.x

y:

title.center.y = self.view.center.y
54
Rashwan L

自動レイアウト

アプリを将来的に使用できるようにするには、フレームを設定する代わりに自動レイアウトアンカーを使用します。

1. translatesAutoresizingを無効にする

titleLabel.translatesAutoresizingMaskIntoConstraints = false

2. CenterXおよびCenterY制約を追加します

titleLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true

titleLabel.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true

3. UILabelのテキストの配置を中央に設定します

titleLabel.textAlignment = .center

Preview

17
8HP8

実際には、UILabel内にテキストを入力しています。あなたがしたいことは、ラベルを中央揃えにすることです。それを行うには、次のことができます。

title.frame.Origin = CGPoint(x: x, y: y)

水平方向を中央に配置する場合は、次を実行できます。

title.frame.Origin = CGPoint(x: self.view.frame.width / 2, y: yValue)

また、ラベルのx値とy値を中央に配置する場合は、次の操作を実行できます。

title.frame.Origin = CGPoint(x: self.view.frame.width / 2, y: self.view.frame.height / 2)

Swift 4

これは私のために働いたし、より将来の証拠のようです。これは複数行のラベルでも機能します。

override func loadView() {
    self.view = UIView()

    let message = UILabel()
    message.text = "This is a test message that should be centered."
    message.translatesAutoresizingMaskIntoConstraints = false
    message.lineBreakMode = .byWordWrapping
    message.numberOfLines = 0
    message.textAlignment = .center

    self.view.addSubview(message)

    message.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
    message.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
    message.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
}
5
Devbot10

Swift 3/4/5のコード

行の下に貼り付け、上にfunc viewDidLoad()をオーバーライドします

var noDataLbl: UILabel?

Super.viewDidLoad()の後に以下のコードを貼り付けます

noDataLbl = UILabel(frame: CGRect(x: 0, y: self.view.center.y, width: 290, height: 70))
noDataLbl?.textAlignment = .center
noDataLbl?.font = UIFont(name: "Halvetica", size: 18.0)
noDataLbl?.numberOfLines = 0
noDataLbl?.text = "Replace this with your text."
noDataLbl?.lineBreakMode = .byTruncatingTail
view.addSubview(noDataLbl!)
noDataLbl?.isHidden = false
noDataLbl?.center = self.view.center
0
vilas deshmukh