我正在调整详细视图控制器的状态,就在它被推送到navigationController
:
[self.detailViewController detailsForObject:someObject];
[self.navigationController pushViewController:self.detailViewController
animated:YES];
在DetailViewController
一个 scrollView 驻留。我根据传递的对象调整了哪些内容:
- (void)detailsForObject:(id)someObject {
// set some textView's content here
self.contentView.frame = <rect with new calculated size>;
self.scrollView.contentSize = self.contentView.frame.size;
self.scrollView.contentOffset = CGPointZero;
}
现在,这一切都有效,但 scrollView 会contentOffset
在 navigationController 的滑入动画期间对其进行调整。将contentOffset
设置为最后一个 contentSize 和新计算的值之间的差异。这意味着第二次打开 detailsView 时,详细信息将滚动到某个不需要的位置。即使我明确地设置contentOffset
为。CGPointZero
我发现重置contentOffset
in- viewWillAppear
没有效果。我能想出的最好办法是重置 contentOffset in viewDidAppear
,导致内容明显上下移动:
- (void)viewDidAppear:(BOOL)animated {
self.scrollView.contentOffset = CGPointZero;
}
有没有办法防止 a在更改时对其UIScrollView
进行调整?contentOffset
contentSize