我正在尝试在 UITableView
上创建一个不断增长的 UITableViewHeader
。我在 UITableView 的 tableHeaderView 中设置了一个 UITableView 和一个 mapView。
tblView.bounces = true
tblView.bouncesZoom = true
tblView.alwaysBounceVertical = true
mapView.frame = CGRectMake(0, 0, self.view.frame.size.width, CGFloat(kMapHeaderHeight))
mapView.mapType = MKMapType.Standard
mapView.zoomEnabled=true
mapView.scrollEnabled = true
mapView.delegate = mapHelper
tblView.tableHeaderView = mapView
并且还实现了 scrollViewDidScroll
委托(delegate),每当它向下滚动时,我都将 headerview 的框架更改为
func scrollViewDidScroll(scrollView: UIScrollView) {
var scrollOffset = scrollView.contentOffset.y
println("\(scrollOffset)")
var headerFrame : CGRect = self.mapView.frame
if (scrollOffset < 0){
headerFrame.size.height -= scrollView.contentOffset.y/3
}
self.mapView.frame = headerFrame
}
但是,没有弹跳,它并没有像预期的那样增长。看起来很不清楚。有帮助吗?
我按照这些教程在下拉时创建一个 Growing UITableViewheader UITableVIew header without bouncing when pull down , Expand UITableView Header View to Bounce Area When Pulling Down
这是项目的链接: https://drive.google.com/file/d/0B6dTvD1JbkgBVENUS1ROMzI0Wnc/vie
已编辑:我以某种方式设法产生了效果,但动画看起来很慢
func scrollViewDidScroll(scrollView: UIScrollView) {
let yPos: CGFloat = -scrollView.contentOffset.y
if (yPos > 0) {
var mapViewRect: CGRect = self.mapView.frame
mapViewRect.origin.y = scrollView.contentOffset.y
mapViewRect.size.height = kHeaderHeight+yPos
self.mapView.frame = mapViewRect
}
}
let kHeaderHeight:CGFloat = 200
最佳答案
我建议你使用this教程。
最重要的部分:
- 创建一个
scrollView
(或者任何UIScrollView
的子类)和一个单独的 View (它将作为一个headerView,所以让我们调用if headerView) - 将 headerView 和 scrollView 添加为 View 的 subview
- 实现
scrollViewDidScroll
方法,并将框架逻辑放在那里(当然,如果您使用autolayout
,则必须在那里管理约束)
关于ios - 在快速下拉 UITableView 时为 TableView 的 headerView 设置动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30274582/