更新 UITableView 内的 UIView 帧大小 - swift

Posted

技术标签:

【中文标题】更新 UITableView 内的 UIView 帧大小 - swift【英文标题】:Update UIView frame size inside a UITableView - swift 【发布时间】:2015-07-10 05:59:59 【问题描述】:

我在这样的 UITableView 中有一个 UIView

问题是当我尝试以编程方式调整 UIView 的高度时,UITableView 内的现有单元格没有向上移动 我已尝试更新 UITableview size,

UITableviewwrapperview 

我一直在尝试更新

TableView.contentInset

TableView.contentOffset

size,remove Auto Layout 和 Auto Layout ,但结果都是一样的。

这是我的代码:

@IBAction func SwitchChanged(sender: UISwitch) 

        if sender.on 
            self.ViewBOX.frame.size.height =  self.ViewBOX.frame.size.height + 275


            var  Frame = self.TableView.tableHeaderView!.frame
            Frame.size.height = self.ViewBOX.frame.size.height;
            TableView.tableHeaderView?.frame = Frame



         else 
           self.ViewBOX.frame.size.height =  self.ViewBOX.frame.size.height - 275


            var  Frame = self.TableView.tableHeaderView!.frame
            Frame.size.height = self.ViewBOX.frame.size.height;
            TableView.tableHeaderView?.frame = Frame

        

    

这是结果图片

1:

2:更新后

请有人帮我解释一下我错过了哪一部分。

谢谢

【问题讨论】:

【参考方案1】:

每次更改标题视图框架时,都需要重新分配表标题中的视图。

YourView.frame =  Frame
TableView.tableHeaderView = YourView

然后删除:

TableView.tableHeaderView?.frame = Frame

谢谢

【讨论】:

【参考方案2】:

如果您想以一种好的方式进行更改,您的代码应该如下所示。

@IBAction func SwitchChanged(sender: UISwitch) 
    UIView.animateWithDuration(0.3, animations: 
        if sender.on 
            self.ViewBOX.frame.size.height =  self.ViewBOX.frame.size.height + 275
         else 
           self.ViewBOX.frame.size.height =  self.ViewBOX.frame.size.height - 275
        
        TableView.tableHeaderView = self.ViewBOX
    , completion: 
    )

【讨论】:

以上是关于更新 UITableView 内的 UIView 帧大小 - swift的主要内容,如果未能解决你的问题,请参考以下文章

为 UITableView 内的 UIView 设置约束

当 SuperViews 约束改变时更新 SubView 约束

根据 UIView 约束更新 UITableView 大小

带有 AutoLayout 的 UIScrollView 内的 UITableView 动态内容大小高度

UITableView 单元内的 UIScrollView 内的空白 UITableView

5 星评级不会通知 UITableView 更新值;自定义 UIView 类的作品