gpt4 book ai didi

swift - 动画调整具有 subview 的 UIView 的大小

转载 作者:搜寻专家 更新时间:2023-11-01 06:35:47 25 4
gpt4 key购买 nike

我有一个 UIView,它有一个 UITableView subview 。

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

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

有什么简单的方法可以让我的 UITableView 与 UIView 保持动画,同时保持 AutoLayout 约束?

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

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,因此它被固定在父 View 的左侧,当它调整大小时,它会从右手大小开始调整。但是,UITableView 似乎在左右两侧均等调整大小,直到达到正确的宽度(我希望这是有道理的)。

有什么建议吗?

提前致谢!

最佳答案

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

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

关于swift - 动画调整具有 subview 的 UIView 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41811461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com