我有一个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不是实际加载在视图中的那个吗?
每当包含此滑动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);
}
UIAutoresizingMask
?听起来它似乎在布局过程中被重新调整大小。如果你是通过代码手动定位表格的,那么应该将其设置为UIAutoresizingMask.None
,这也可以在 XCode 中设置。 - jonathanpeppers