设置静态位置查看Tableview(Swift)

时间:2016-05-05 02:51:55

标签: swift uitableview addsubview

目前我将所有的storyboard viewcontrollers传递给代码,目前我遇到了一个视觉问题。由于某种原因,我的代码addSubView()

没有复制

这就是我在Storyboard上的样子

enter image description here

这是将视图附加到tableview

中的代码
let profileView = UIView(frame: CGRectMake(0,0,500,45))
    profileView.backgroundColor = UIColor(red:0.35, green:0.77, blue:0.66, alpha:1)
    self.tableview.addSubview(profileView)

问题在于,使用此代码时,视图会在我向上或向下滚动视图时,使用Storyboard VC,它只会滚动Tableview,我的视图只会在我放置它的位置保持静态,这就是方式我喜欢它。 "静态"

enter image description here

这也说明了我想要实现的目标。 enter image description here

1 个答案:

答案 0 :(得分:0)

我把它扔给你了。这是如何做到这一点的一个例子。但是,UITableview并不打算以这种方式使用。您可以看到自定义视图覆盖了单元格0。从数据源填充tableview时,您必须考虑到这一点。

    import UIKit

class testTableVIewController: UITableViewController {
    @IBOutlet var theTableView: UITableView!
    var profileView:UIView

required init?(coder aDecoder: NSCoder) {
    profileView = UIView(frame: CGRectMake(0,0,500,45))
    profileView.backgroundColor = UIColor(red:0.35, green:0.77, blue:0.66, alpha:1)
    super.init(coder: aDecoder)
}

override func viewDidLoad() {
    super.viewDidLoad()
    self.theTableView.addSubview(profileView)

}
override func scrollViewDidScroll(scrollView: UIScrollView) {
    profileView.frame = CGRectOffset( profileView.frame, scrollView.contentOffset.x, 0 );

}

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 20
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = theTableView.dequeueReusableCellWithIdentifier("cell")
        cell?.textLabel?.text = String(indexPath.row)
        return cell!
    }
}

enter image description here

而不是将视图作为表视图的子视图放置,您应该做什么。

  1. 创建一个视图。 (为方便起见,我将称之为内容视图)
  2. 将视图添加到内容视图中。
  3. 将tableview添加到内容视图。
  4. 将视图/表视图放在内容视图中彼此相邻的位置。 这将具有滚动表视图和彼此相邻的静态视图的期望效果。如果所需效果是在tableview上的浮动视图,则反向步骤2和3。

    哦顺便问一下。如果您在代码中完成所有操作,那么更改为这种布局非常容易。只需将tableview控制器更改为视图控制器并采用UITablview Protocols。

    class testTableVIewController: UITableViewController {
    class testTableVIewController: UIViewController,UITableViewDataSource,UITableViewDelegate {
    

    然后为tableview类添加一个属性。还要将其添加到self.view中的正确位置。还记得将你的绿色视图添加到self.view

    如果您这样做,则根本不需要更改太多代码。