nic*_*f89 1 xcode uitableview uiview uiviewanimation swift
我有一个 UIView 有一个 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
Run Code Online (Sandbox Code Playgroud)
这是有效的,UITableView 与 UIView 一起随着动画调整大小,但是 AutoLayout 并不像我期望的那样工作。
UIView 的 X 值是 0.0,所以它被固定在超级视图的左边,当它调整大小时,它是从右手大小开始的。但是, UITableView 似乎在左右调整大小,直到达到正确的宽度(我希望这是有道理的)。
有什么建议?
提前致谢!
从动画块中丢失您在问题中列出的三行,并在块的末尾添加layoutIfNeeded()对正在更改大小的视图的调用。(即<yourMenuView>.layoutIfNeeded())
这会导致在每个动画帧中重新应用约束,根据需要调整所有子视图的布局以符合约束。
| 归档时间: |
|
| 查看次数: |
1354 次 |
| 最近记录: |