2017-05-28 4 views
1

私はビューを持っており、その中に私はUILabelを持っています。ビューの幅をテキストの長さに応じて変更したい。 私が試したのは、UILabelで最初にSizeToFit()を実行し、フレームが変更されることを期待し、ラベルのフレームをビューのフレームに配置することです。 これはうまくいかず、自動レイアウト制限があると思います。 これは私が試したもののコードです:UILabelのテキストサイズに従って親ビューフレームを更新しようとしています

private func example(){ 
    self.labelInsideView.sizeToFit() 
    viewThatContainsLabel.frame = labelInsideView.frame 
    self.layoutIfNeeded() 
} 

私が収まるようにサイズがフレームを変更しないかなり確信しているので、これは動作しないことかなり明白ようです。これを達成する方法はありますか?

答えて

1

はあなたUIView's幅の制約のIBOutletを行い、その後、単純に、なぜあなたも、この機能を使用しているUILabel

self.labelInsideView.sizeToFit() 
self.widthConstraintOfView.constant = labelInsideView.frame.size.width 
self.layoutIfNeeded() 
+0

素晴らしいアイデア。それを試してみる – Eyzuky

0

の幅に一定の幅の制約を変更します。ビューには制約があります。

=トップ= 8 =ボトム先頭と末尾> = 20

あなたのラベルが5

に等しいすべての制約は今すぐ試してみて、追加ラベル内の任意のテキストを、あなたが更新されますでしょうしている必要がありますこの機能を使用せずにビューのフレームを表示します。これを一度試してみてください。

+0

私もこれを調べます。興味深いですね。あなたの答えには魔法の数字が含まれていますが、私はこれに相対的な制約を使いますので、何とか翻訳する必要があります。 – Eyzuky

+0

これらの数字は単なる例です。適切な結果が表示されたら、必要に応じて修正します。 –

+0

明日更新されます:) – Eyzuky

関連する問題