在我的UIViewController
我有UIScrollView
,然後在UITableView
裏面。即使沒有UIScrollView
,我也會收到奇怪的行爲。當我的ViewController
不是子類別時,我的UITableView
(自己)表現良好。我將VC
和突然之間的TV
劃分在我的navBar
下面。我沒有做過特別的事情,我可以看到會導致這種變化,但是由於我在這些年來第一次使用AutoLayout,因此可能會出現我忽略的情況。無論如何,我然後用這個手動解決這個問題:Swift - UITableView在UIScrollView內容插入不正確與Autolayout
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews();
var currentInsets: UIEdgeInsets = tableView.contentInset;
println("Inset from top", self.topLayoutGuide.length)
self.tableView.contentInset = UIEdgeInsets(top: self.topLayoutGuide.length, left: currentInsets.bottom, bottom: currentInsets.left, right: currentInsets.right);
}
一切按預期工作(即使我不應該這樣做)。然後我在SV
中添加混音,然後再次發生一些混亂。屏幕加載TV
在y= -64
巧合(絕對不是巧合)它是Inset
設置爲。在任何地方觸摸,它會對齊到y= 0
(它應該始終捕捉並開始),然後稍微滾動它就會跳到y= +49
。 TV
似乎有3個點如上所述,但我不知道爲什麼。 SV
設置爲具有滾動方向鎖定和分頁功能。這是contentOffset
是screen height
(這就是爲什麼我不明白爲什麼會導致這些問題)×2 * screen width
。如果我刪除了我的手動修補程序inset
,正如預期的那樣,問題只是向上移動了64.只有TV
報告相同的高度爲0 & -64(無法使其對齊到+49),這是可以理解的不應該將滾動代理中的插值計入y值。
無論如何,所以我絕對不知道爲什麼我的內的UITableView
正在播放它的程度。我始終覺得UIScrollView
會自動處理它的直接子元素的任何內容插入,包括TableViews
。
如果有人可以對此有所瞭解,我將不勝感激。
的問候,
邁克
UPDATE:這個問題,因爲我已經發現,在於我設置我的contentOffset
在viewDidLayoutSubviews()
我目前做這樣的方式:scrollView.contentSize = CGSizeMake(self.view.frame.width * 2 , self.view.frame.height);
。仍然不確定爲什麼這行代碼會導致我遇到的無數問題。
您應該取消插入工作的自動佈局。 – Anton
@Anton剛剛禁用了Autolayout,但是當我在更新中提到的代碼行出現時,問題仍然存在。 – Mackey18