首页 文章

动画调整具有子视图的UIView的大小

提问于
浏览
1

我有一个UITiew,它有一个UITableView子视图 .

UIView是一个菜单,最初宽度为设备宽度的50%,UITableView对UIView具有AutoLayout约束 .

选择菜单中的项目会触发UIView调整为设备宽度的33% . 正如我所料,UITableView在没有动画的情况下改变大小,然后UIView通过动画赶上它 .

有没有简单的方法可以使用我的UIView动画我的UITableView,同时保持AutoLayout约束?

我在与UIView相同的动画块中尝试了以下内容:

let tableWidth = self.mm.menuOneController.tableView.bounds.size.width
let newTableWidth = (tableWidth * 2) / 3
self.mm.menuOneController.tableView.bounds.size.width = newTableWidth

这很有效,UITableView正在调整动画以及UIView,但是AutoLayout并没有像我期望的那样工作 .

UIView的X值是0.0,因此它固定在superview的左侧,当它调整大小时,它从右手大小开始 . 但是,UITableView似乎在左右两侧均匀调整大小,直到达到正确的宽度(我希望这是有道理的) .

有什么建议?

提前致谢!

1 回答

  • 3

    从动画块中丢失问题中列出的三行,并在块的末尾添加对正在改变大小的视图的 layoutIfNeeded() 的调用 . (即 <yourMenuView>.layoutIfNeeded()

    这导致在每个动画帧中重新应用约束,根据需要调整所有子视图的布局以符合约束 .

相关问题