2016-11-22 14 views
2

私はテキスト変更のUILabelを持っています。それは私が常に同じ幅にしたいが、テキストに合わせて必要に応じて高さを変えたいという背景色を持っています。誰が私がこれをどうやってやるかも知っていますか?ここでプログラムで固定幅、動的高さUILabel?

は、私が試したものです:

label.numberOfLines = 0 
    label.center = self.view.center 
    label.textAlignment = .center 
    label.widthAnchor.constraint(equalToConstant: 50.0).isActive = true 
    label.sizeToFit() 
+0

まだコードを書いていませんか?あなたが試したことを知ることは役に立ちます。 – Wez

+1

申し訳ありません、それを追加しました – MarksCode

+0

ラベルをフレームで初期化していますか? – Wez

答えて

-1

を使用すると、自動レイアウトを使用して、それ以上のビューにあなたのラベルを固定したい、あなたはトップを設定することができ考えると、右に左にそのラベルの制約はその後、あなたはおそらくautolayout上のいくつかの読み取りを行うと、それをあなたのビューを構築する方法を学ぶ必要がありますUILabelnumberOfLines 0に

+0

複数行UILabelで下限制約を使用することは非常に可能です – Wez

+0

OPがautolayoutを使用しているようには見えません。 – Wez

+0

最後の編集で@Wezlyが自動レイアウトでも試しているようです –

0

を設定し、しかし、私はあなたがにラベルたいように見える集めることができるものから:

  • が画面
  • の中心部にある固定幅
  • をお持ちの背景色
  • をお持ちのそのに合うように拡大コンテンツ垂直

let label = UILabel() 
label.translatesAutoresizingMaskIntoConstraints = false 
label.backgroundColor = UIColor.greenColor() 
label.numberOfLines = 0 
label.textAlignment = .Center 
label.text = "This is\nsome multiline\nlabel\nwith a background\n colour" 
self.view.addSubview(label) 

let width = NSLayoutConstraint(item: label, attribute: .Width, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 1, constant: 50) 
let centerX = NSLayoutConstraint(item: label, attribute: .CenterX, relatedBy: .Equal, toItem: self.view, attribute: .CenterX, multiplier: 1, constant: 0) 
let centerY = NSLayoutConstraint(item: label, attribute: .CenterY, relatedBy: .Equal, toItem: self.view, attribute: .CenterY, multiplier: 1, constant: 0) 

self.view.addConstraints([width, centerX, centerY]) 

上記のコードは生成autolayoutを使用している緑色のラベルには、screenshot hereがあります。

numberOfLines = 0を使用すると、ラベルはその内容に合わせてラベルが拡大できることがわかります。

レイアウトの制約は読んだら、ラベルの幅を50に設定して、ラベルを追加したビューと同じになるように中央のXとYの拘束を設定します。

これはあなたの後ですか? - そうでなければ、あなたがしようとしていることのモックアップイメージを含むように質問を更新することができます。

関連する問題