我有一个 UITableView,我为其动态设置 Frame 以便将其调整为项目数。我这样做是为了让表格视图可以通过从手机顶部拖动来“滑动”下来。UITableView 在视图的 nib 中定义。
每当包含此滑动 UITableView 的视图消失时(如调用 viewDidDisappear),UITableView 的 Frame 就会重置为 nib 中的值(我已将其设置为 44,即静态页脚的大小)。
我的问题分为两部分:
- 为什么框架会被重置,什么机制正在重置框架?
- 我如何确保每当 Frame 重置为 nib 值时,我可以将 Frame 设置为我想要的大小?
作为背景,我已经用尽了所有可能的视图生命周期方法。
一个有趣的注意是我试图在 ViewDidAppear 中设置 Frame,它在重现我的“错误”时受到打击,并且我已经验证 Frame.Height 是方法结束时的所需值,尽管当引脚掉落时最后,Frame 高度仍为44。我点击的 tableView IBOutlet 不是视图中实际加载的那个吗?
public override void ViewDidAppear (bool animated)
{
RetractMemoryTableAnimation(0);
// Frame is correct after this line (Height > 44)
// But the Frame in my view persists to a height of 44
this.tableView.Frame = new RectangleF(this.tableView.Frame.Location.X, this.tableView.Frame.Location.Y,
this.tableView.Frame.Size.Width, this.CalculatedTableViewHeightWithFooter);
}