8

UITextViewプログラムでtoを追加しようとしUIStackViewていますが、画面に表示されません。

Debug View Hierarchy をチェックインすると、ビュー階層にあり、いくつかの制約がありますが、出力されたビューには表示されません。

これは私のコードです:

let stackView = UIStackView()

let textView = UITextView()
let button = UIButton()

stackView.axis = .Horizontal
stackView.spacing = 20
stackView.distribution = UIStackViewDistribution.Fill

button.setImage(UIImage(named:"image1"), forState: .Normal)
button.setImage(UIImage(named:"image2"), forState: .Selected)


textView.textAlignment = NSTextAlignment.Left
textView.textColor = UIColor.blackColor()
textView.editable = true
textView.text = ""

stackView.addArrangedSubview(textView)
stackView.addArrangedSubview(button)

ボタンがうまく追加されました。しかし、TextView を正しく表示する方法が見つかりません! 以下のような幅/高さの制約を追加しようとしましたが、うまくいかないか、うまく機能しません(バリアントによって異なります):

let widthConstraint = NSLayoutConstraint(item: textView,
                 attribute: NSLayoutAttribute.Width,
                 relatedBy: NSLayoutRelation.Equal,
                 toItem: stackView,
                 attribute: NSLayoutAttribute.Width,
                 multiplier: 1,
                 constant: 0)
stackView.addConstraint(widthConstraint)
let heightConstraint = NSLayoutConstraint(item: textView, attribute:   NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: stackView, attribute: NSLayoutAttribute.Height, multiplier: 1, constant: 0)
stackView.addConstraint(heightConstraint)

ただし、UITextField, notを追加すると、UITextView制約なしで正常に機能します。

4

3 に答える 3

20

UITextViewのサブクラスであるため、UIScrollViewそのサイズは内部であいまいUIStackVIewです。サイズを明確にするために、コンテンツに基づいてサイズを変更します。つまり、スクロールできないようにします。簡単な解決策は次のとおりです。

textView.isScrollEnabled = false

(Swift 3.0 構文)

于 2016-10-16T14:54:07.550 に答える
2

私は何が欠けているかを理解しました。作成しているクラスのテキストビューのフレームサイズがわからないため、指定されたイニシャライザを使用できません。

しかし、これは役に立ちました - 上記のコードで、stackView.distribution の後に次の行を追加します。

 self.alignment = UIStackViewAlignment.Fill
于 2015-11-07T06:47:39.643 に答える
1

使ってみて

init(frame frame: CGRect,textContainer textContainer: NSTextContainer?)

UITextView の指定された初期化子であるためです。

于 2015-11-03T12:19:32.990 に答える