2015-11-03 37 views
2

我試圖以編程方式將UITextView添加到UIStackView,但它沒有出現在屏幕上。從UIStackView中缺少的代碼添加UITextView

當我檢入調試視圖層次結構時,它位於視圖層次結構中,它有一些約束,但不顯示在輸出視圖中。

這是我的代碼:

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,不UITextView,那麼它不工作正常任何約束。

+0

你嘗試TextView的背景顏色設置爲白色?通常背景顏色設置爲clearColor。 –

+0

是的。不幸的是背景不是問題。看到下面的解決方案 – dorsz

回答

2

我想出了什麼是缺失。我不能使用指定的初始值設定項,因爲我不知道我正在創建它的類中的文本視圖的幀大小。

但是,這有助於 - 在代碼中的stackView.distribution之後添加此行以上:

self.alignment = UIStackViewAlignment.Fill 
1

使用

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

至於它是一個UITextView中的指定初始化嘗試。

8

UITextViewUIScrollView一個子類,因此它的尺寸是內部UIStackVIew模棱兩可。要使尺寸明確無誤,可以根據其內容調整其大小 - 即使其不可滾動。 簡單的解決方案則是:

textView.isScrollEnabled = false 

(雨燕3.0語法)

+0

很酷,這解決了我的問題。 – RainCast