一个UITableView的框架被重置为nib中的值

3
我有一个UITableView,我动态设置其Frame以调整其大小以适应项目数量。 我这样做是为了使TableView可以通过从手机顶部拖动进行“滑动”。 UITableView在视图的nib中定义。
每当包含此滑动UITableView的视图消失(也就是说,viewDidDisappear被调用),UITableView的Frame就会重置为nib中的值(我已将其设置为44,静态页脚的大小)。
我的问题分为两个部分:
1.为什么Frame会被重置,重置Frame的机制是什么?
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);
    }

1
你在表格上使用了什么 UIAutoresizingMask?听起来它似乎在布局过程中被重新调整大小。如果你是通过代码手动定位表格的,那么应该将其设置为 UIAutoresizingMask.None,这也可以在 XCode 中设置。 - jonathanpeppers
成功了(除了将TranslatesAutoresizingMaskIntoConstraints重置为true)。 - Erik Kerber
1个回答

4

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接