在运行时更改tableview高度

时间:2015-10-15 05:37:19

标签: ios objective-c iphone swift

HLO, 我正在创建一个菜单作为tableview,并在按钮点击时切换其可见性。我实际上正在改变它的高度。但是改变tableview的高度只会影响tableview而不是它内部的单元格。 TableView也有阴影,如果我删除阴影它完美地工作。请帮忙。 这是一些代码片段

let _initialTableFrame = CGRectMake(self.view.frame.size.width - 150, 68, 140, 0)
    _topMenuTableView = UITableView(frame: _initialTableFrame)
    _topMenuTableView.delegate = self
    _topMenuTableView.dataSource = self
    _topMenuTableView.rowHeight = 35
    _topMenuTableView.tag = 100
    _topMenuTableView.alpha = 0.9
    _topMenuTableView.tableFooterView = UIView()
    _topMenuTableView.scrollEnabled = false

    _topMenuTableView.layer.cornerRadius = 5
    _topMenuTableView.layer.shadowColor = UIColor.blackColor().CGColor
    _topMenuTableView.layer.shadowOffset = CGSizeMake(0, 0)
    _topMenuTableView.layer.shadowRadius = 5.0
    _topMenuTableView.layer.shadowOpacity = 1 
func toogleTopMenu()
{
    if _isTopMenuVisible
    {
        let _currentTopMenuFrame = _topMenuTableView.frame
        let _tempFrame = CGRectMake(_currentTopMenuFrame.origin.x, _currentTopMenuFrame.origin.y, _currentTopMenuFrame.size.width, 0)


        UIView.animateWithDuration(0.2, animations: {self._topMenuTableView.frame = _tempFrame})
        _isTopMenuVisible = false
    }
    else
    {
        let _currentTopMenuFrame = _topMenuTableView.frame
        let _tempFrame = CGRectMake(_currentTopMenuFrame.origin.x, _currentTopMenuFrame.origin.y, _currentTopMenuFrame.size.width, 38)

        UIView.animateWithDuration(0.2, animations: {self._topMenuTableView.frame = _tempFrame})
        _isTopMenuVisible = true
    }
}

1 个答案:

答案 0 :(得分:0)

这是因为您只更改tableView的框架而不是tableViewCellHeight

试试这个

    func toogleTopMenu()
{
    if _isTopMenuVisible
    {
        let _currentTopMenuFrame = _topMenuTableView.frame
        let _tempFrame = CGRectMake(_currentTopMenuFrame.origin.x, _currentTopMenuFrame.origin.y, _currentTopMenuFrame.size.width, 0)

        UIView.animateWithDuration(0.2, animations: {self._topMenuTableView.frame = _tempFrame
_topMenuTableView.rowHeight = //whatever Height you want to assign
_topMenuTableView.reloadDate()
})

        _isTopMenuVisible = false
    }
    else
    {
        let _currentTopMenuFrame = _topMenuTableView.frame
        let _tempFrame = CGRectMake(_currentTopMenuFrame.origin.x, _currentTopMenuFrame.origin.y, _currentTopMenuFrame.size.width, 38)
    UIView.animateWithDuration(0.2, animations: {self._topMenuTableView.frame = _tempFrame
_topMenuTableView.rowHeight = //whatever Height you want to assign
_topMenuTableView.reloadDate()
})
    _isTopMenuVisible = true
}
}

这会有所帮助。谢谢