我正在开发一个基于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
}
}
图像:
答案 0 :(得分:1)
你应该尝试在显示前制作单元格布局,避免这种奇怪的效果。
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
let cell = // get your cell for indexPath here
cell.layoutIfNeeded()
}