Ber*_*rik 37 iphone uiscrollview ios contentsize
我正在调整一个详细视图控制器的状态,就在它按下之前navigationController:
[self.detailViewController detailsForObject:someObject];
[self.navigationController pushViewController:self.detailViewController
animated:YES];
Run Code Online (Sandbox Code Playgroud)
在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;
}
Run Code Online (Sandbox Code Playgroud)
现在,这一切都有效,但scrollView会contentOffset在navigationController的滑入式动画中调整它.在contentOffset将被设置为最后contentSize和新计算之间的差异.这意味着第二次打开detailsView时,详细信息将滚动到某个不需要的位置.即使我设置contentOffset来CGPointZero明确.
我发现,重新contentOffset在- viewWillAppear没有任何效果.我能想到的最好的方法是重置contentOffset viewDidAppear,导致内容明显上下移动:
- (void)viewDidAppear:(BOOL)animated {
self.scrollView.contentOffset = CGPointZero;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法防止UIScrollView它contentOffset在contentSize改变时调整它?
Kar*_*nne 58
使用a 推送UIViewController包含a 时发生.UIScrollViewUINavigationController
IOS 7
解决方案1(代码)
设置@property(nonatomic, assign) BOOL automaticallyAdjustsScrollViewInsets 为NO.
解决方案2(故事板)
取消选中 Adjust Scroll View Insets

iOS 6
解决方案(代码)
设置UIScrollView的财产contentOffset和contentInset在viewWillLayoutSubviews.示例代码:
- (void)viewWillLayoutSubviews{
[super viewWillLayoutSubviews];
self.scrollView.contentOffset = CGPointZero;
self.scrollView.contentInset = UIEdgeInsetsZero;
}
Run Code Online (Sandbox Code Playgroud)
Ber*_*rik 15
尽管我找到了解决方案,但问题的原因仍不清楚.通过在调整内容大小和偏移量之前重置它们,UIScrollView将不会设置动画:
- (void)detailsForObject:(id)someObject {
// These 2 lines solve the issue:
self.scrollView.contentSize = CGSizeZero;
self.scrollView.contentOffset = CGPointZero;
// 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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43754 次 |
| 最近记录: |