UITableView的框架被重置为笔尖中的值

时间:2013-01-30 19:48:38

标签: ios cocoa-touch xamarin.ios

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

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

我的问题是两部分:

  1. 为什么帧会重置,以及重置帧的机制是什么?
  2. 我怎样才能确保每当Frame重置为nib值时,我可以将Frame设置为我想要的大小?
  3. 对于背景,我已经用尽了所有合理的视图生命周期方法。

    一个有趣的注意事项是我尝试在ViewDidAppear中设置Frame,它在重现我的“bug”时被击中,并且我已经验证了Frame.Height是方法结束时所需的值,尽管当时引脚落在最后,框架高度仍然在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 个答案:

答案 0 :(得分:4)

在编写自定义代码以设置UIView的框架时,如果视图似乎已自动调整大小,请务必将AutoresizingMask设置为UIAutoresizingMask.None