我正在尝试在滚动时在UITableViewController顶部保留带有标签,segmentedControl和按钮的UIView。我不能将ViewController与UITableView一起使用,因为我的TableViewCells是静态的,其中包含UITextFields。我知道这可以通过ViewController和ContainerViewController完成,但是,这会使需要在视图之间传递的数据量变得复杂。我在swift中寻找一个scrollViewDidScroll解决方案。
这是我到目前为止所拥有的。我已经在故事板中创建了View(也许这是问题的一部分。)labelView通过outlet连接。
override func scrollViewDidScroll(scrollView: UIScrollView) {
var rect = self.labelView.frame
rect.origin.y = min(0,scrollView.contentOffset.y + scrollView.contentInset.top);
self.labelView.frame = rect;
}
答案 0 :(得分:0)
如果您只有一个部分,那么您可以尝试在部分标题中添加视图。是的,你必须改变很多东西,但它会100%工作
答案 1 :(得分:0)
我明白了。
首先,我将虚拟空白视图放在我想要的视图中。我做了这个,否则它将自己置于桌面视图之上。我相信你也可以在代码中设置,但这似乎更容易。然后我在tableViewController之外创建了一个单独的视图,并设置了我的标签和按钮。通过插座连接此视图。这是添加视图然后在滚动时保持其位置的代码。
@IBOutlet var labelView: UIView!
override func viewDidLayoutSubviews() {
self.view.addSubview(labelView)
labelView.frame.size.width = self.view.frame.size.width
}
override func scrollViewDidScroll(scrollView: UIScrollView) {
var rect = self.labelView.frame
rect.origin.y = max(0,scrollView.contentOffset.y + scrollView.contentInset.top)
self.labelView.frame = rect
}