3

我有一个 UITableView,我为其动态设置 Frame 以便将其调整为项目数。我这样做是为了让表格视图可以通过从手机顶部拖动来“滑动”下来。UITableView 在视图的 nib 中定义。

每当包含此滑动 UITableView 的视图消失时(如调用 viewDidDisappear),UITableView 的 Frame 就会重置为 nib 中的值(我已将其设置为 44,即静态页脚的大小)。

我的问题分为两部分:

  1. 为什么框架会被重置,什么机制正在重置框架?
  2. 我如何确保每当 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);
    }
4

1 回答 1

4

在编写自定义代码来设置 a的框架时,如果视图似乎正在自动调整大小UIView,请始终确保设置AutoresizingMask为。UIAutoresizingMask.None

于 2013-01-30T20:22:20.600 回答