我想先显示一半的页眉。当用户点击页眉中的一个按钮时,页眉的其余部分会向下滑动并显示出来。当用户再次点击按钮时,页眉会向上滑动回到原始大小(1/2大小)。
然而,当我试图扩展标题的高度时,它覆盖了tableView单元格,而不是将它们向下推。
func prepareHeader(){
let headerHeight = CGFloat(51.0)
headerView = UIView(frame: CGRect(x: 0, y: 0, width: screenWidth, height: headerHeight))
headerView.backgroundColor = UIColor.whiteColor()
headerView.layer.addSublayer(bottomBorder)
headerView.layer.masksToBounds = true
let toggler = UIButton(type: .Custom)
toggler.frame = CGRectMake(0, 0, 40, 40)
toggler.backgroundColor = FlatGreen()
toggler.addTarget(self, action: "toggleHeader:", forControlEvents: UIControlEvents.TouchUpInside)
headerView.addSubview(toggler)
self.tableView.tableHeaderView = headerView
}
func toggleHeader(sender: UIButton){
print("Pushed")
var newFrame = self.headerView.frame
newFrame.size.height = CGFloat(100)
self.headerView.frame = newFrame
}
2条答案
按热度按时间tp5buhyn1#
我们想要的
可以动态打开和关闭的表格视图标题。
溶液1:无接口构建器
溶液2:使用界面生成器
要使
UITableView
标题动态更改高度,请尝试以下操作。在你的故事板中,首先添加一个
UITableView
到你的视图控制器中,然后添加一个UIView
作为UITableView
的第一个子视图(Interface Builder自动将其解释为UITableView
的标题视图)。在表和表头上连接一个插座,这样我们就可以在后面的代码中访问它们。
接下来,我们在代码中创建两个约束(打开和关闭),稍后我们将添加/删除这两个约束以切换页眉的高度。
让我们创建一个标记来跟踪头部的打开/关闭状态,并且指定打开的头部高度。
Interface Builder会自动将我们创建的标题的尺寸转换为自动布局约束。由于我们要自己更改标题的高度,因此需要添加我们自己的替换约束并删除这些自动约束(
NSAutoresizingMaskLayoutConstraints
)。在viewDidLoad()
中,添加以下内容(将默认标题高度作为闭合高度,HEADER_OPEN_HEIGHT
作为开放标题高度)。最后,在Interface Builder中添加一个按钮,并将其连接到视图控制器中的一个操作。
omhiaaxx2#
有几个想法可以尝试
self.tableView.scrollToRowAtIndexPath(indexPath, atScrollPosition .Top:, animated: true)
,其中indexPath是之前位于顶部的单元格,您可以尝试是否将其设置为动画self.tableView.headerView
会改善这种情况吗?