我正在創建一個小型聊天應用程序,其中使用UIScrollView的自定義子類來顯示消息。這個程序只是爲了練習,所以我不想使用第三方庫。我通過Apple閱讀technical note 2154和幾個教程來解釋這個,我正在實現這個UIScrollView通過自動佈局,我的實現幾乎可以工作,但我的UIScrollView的內容視圖似乎並沒有填滿所有可用的空間。UIScrollView動態高度內容(自動佈局)不能填滿整個空間
呈現了滾動的代碼是:
public class ChatView: UIScrollView {
private var contentView: UIView
...
// This get called by all the init methods. contentView is already created (contentView = UIView())
private func setupViews() {
self.translatesAutoresizingMaskIntoConstraints = false
contentView.translatesAutoresizingMaskIntoConstraints = false
self.addSubview(contentView)
let constraint1 = NSLayoutConstraint(item: self, attribute: .Top, relatedBy: .Equal, toItem: contentView, attribute: .Top, multiplier: 1.0, constant: 0.0)
let constraint2 = NSLayoutConstraint(item: self, attribute: .Bottom, relatedBy: .Equal, toItem: contentView, attribute: .Bottom, multiplier: 1.0, constant: 0.0)
let constraint3 = NSLayoutConstraint(item: self, attribute: .Width, relatedBy: .Equal, toItem: contentView, attribute: .Width, multiplier: 1.0, constant: 0.0)
let constraint4 = NSLayoutConstraint(item: self, attribute: .CenterX, relatedBy: .Equal, toItem: contentView, attribute: .CenterX, multiplier: 1.0, constant: 0.0)
self.addConstraints([constraint1, constraint2, constraint3, constraint4])
self.layoutIfNeeded()
// Later, the messages are added to the contentView. I don't think is relevant to see the exact code (but I can post it if needed)
// Each message is added using autolayout and the constraints only reference the messages themselves and contentView
}
}
當我添加一個ChatView到(使用故事板)我的視圖控制器,其四邊固定到觀點這不是他的層次,下面的問題發生的情況:
在圖像中,所述滾動視圖不能向上滾動任何更多。似乎有一個空間應該填補,而不是。如果向下滾動,我會遇到完全相同的問題,但空白空間低於內容。在下面的圖片,你可以看到,內容查看比ChatView本身最小:
而且同一視圖層次結構,但與所示的限制:
兩個圖像中在後臺查看是ChatView,所選的是contentView。我一直無法確定內容視圖不包含完整的ChatView空間的原因。
在此先感謝!