ちょっと私はUIView
の中にUITextView
を持っています。 this solution自動レイアウトをオフにして内容をラップするようにUIViewのサイズを変更します
私は自動レイアウトを無効にしています(sizeToFit()
のような他のソリューションは自動レイアウトをオンにしていませんでした)が、これを行うとすべてのコンテンツテキストビューのレンダリングが行われると、UIView
の境界をオーバーフローします。
私はそれもコンテナのテキストビューのために働いたのと同じ解決策を使用しようとしましたが、何もしませんでした。
仕事に思えるん一つのことがある:
newFrame = containerView.frame
newFrame.size.height = textView.frame.size.height
containerView.frame = newFrame
しかし、これは、それは高さがあることはできませんですので、私はまた、このコンテナビューでラベルのカップルを持っているよだって私は必要なものではありませんテキストフィールドと同じです。
自動レイアウトを再度オンにしないとこれを修正する方法はありますか?自動レイアウトをオンにするとこれを修正すれば、テキストビューの動的なサイズを維持する方法があります(それをオンにすると、それを破ることになります)。
私は非常にこれに新しいです。ヘルプをよろしくお願いいたします。
ああ、私は実際にiOSのものではなく、tvOSアプリケーションを開発しています。それが違いを生むならば、ダンノ。
EDIT:
ここでは、実際のコードがあります:
@IBOutlet weak var container: UIView!
@IBOutlet weak var label: UILabel!
@IBOutlet weak var text: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
print(text.frame.origin.x, text.frame.origin.y)
text.scrollEnabled = false
text.text = "bla blah blah blah boo boo boo boooooo boo blah yo yo yo yo yo hello"
let fixedWidth = text.frame.size.width
let newSize = text.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.max))
var newFrame = text.frame
newFrame.size = CGSize(width: max(newSize.width, fixedWidth), height: newSize.height)
text.frame = newFrame
}
これは動的テキストビュー時にコンテンツの変更を展開します。追加:
newFrame = containerView.frame
newFrame.size.height = textView.frame.size.height
containerView.frame = newFrame
容器UIView
のサイズを変更し、そのように単にテキストビューと重なる容器に他の要素を追加テキストビュー0のtext.frame.origin.y
を行います。
だから私は実際に私の異なるコンポーネントの間にあるパディングをハードコーディングし、それらを一緒に追加する必要がありますか?それは非常にきれいではないですか?私は本当に垂直の制約を少しも得ていませんでした。私はそれが動的にサイズを変更するためにUIViewで使用できる何かですか? – alokraop
それは明らかではありませんが、Autolayoutの前にはオプションでしたが、定数部分を直接45にハードコーディングすることができます。Autolayoutについては、https://www.raywenderlich.com/110393/auto-layout-visual-format-languageチュートリアル –
ちょっと詰め物の高さを追加できませんでした。テキストビューの高さをコンテナに代入すると、テキストビューの原点が何らかの形で変更されるので、その上にある他のコントロールと重なることになります。理由は考えられません。 – alokraop