在揭示

时间:2015-11-17 17:39:48

标签: ios swift uitableview uiview

我正在开发一个基于Swift 2.0(和自动布局)的项目。我正在尝试使用简单的扩展器控件来构建视图控制器。用户点击标题位,它会扩展以显示一个选择表。

它有效,但最初的揭示有点奇怪。用户第一次点击标题时,它会按预期进行扩展,但表格内容从左侧轻轻滑入。在随后的点击中,它会在没有这些额外动画的情况下发挥作用。

如果可以的话,我想消除这种轻微的“滑入”。但是我对此我是新手,我不完全理解我做错了什么。搜索Google和SO已经证明令人沮丧。我不认为我知道正确的术语来解释它发生了什么。

我已经包含了示例代码,说明了我在做什么。我还包括一个动画,所以你可以看到它发生了什么。谢谢!

代码:

import UIKit

class ViewController: UIViewController, UITableViewDataSource {
    @IBOutlet weak var tableViewHeight: NSLayoutConstraint!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        tableViewHeight.constant = 0
    }

    @IBAction func openTable(sender: AnyObject) {
        if tableViewHeight.constant == 0 {
            tableViewHeight.constant = 220
        } else {
            tableViewHeight.constant = 0
        }

        UIView.animateWithDuration(0.3, animations: {
            self.view.layoutIfNeeded()
        })
    }

    // MARK: tableView stuff
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 3 }

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = UITableViewCell()
        cell.textLabel?.text = "Cell \(indexPath.item)"
        return cell
    }

}

图像:

UITableView errant slide in

1 个答案:

答案 0 :(得分:1)

你应该尝试在显示前制作单元格布局,避免这种奇怪的效果。

    func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
      let cell = // get your cell for indexPath here
      cell.layoutIfNeeded()
    }