UIScrollview 第二次无法正确显示

Posted

技术标签:

【中文标题】UIScrollview 第二次无法正确显示【英文标题】:UIScrollview not displaying correctly second time around 【发布时间】:2012-11-19 23:51:28 【问题描述】:

我有一个 UIScrollview 加载正常,显示正常,一切正常。然后我推送另一个视图控制器,称之为 VC2,它也可以正常工作。从 VC2 我弹出回到 UIScrollview,这是奇怪的行为......当 UIScrollview 回来时,从顶部开始的第一个(我猜)300 像素被切断。如果我拉下页面,我仍然可以看到内容,但显然这对我不起作用。有人有什么想法吗?

代码如下:

这是创建 ScrollView:

-(IBAction)startNewSearch:(id)sender

NewSearch *VCscrollView = [[NewSearch alloc] init];
[[self navigationController] pushViewController:VCscrollView animated:YES];

滚动视图

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) 
    // Custom initialization

return self;


- (void)viewDidLoad

[super viewDidLoad];
scrollView.contentSize = CGSizeMake(320, 890);
[scrollView setContentOffset:CGPointMake(0, 0) animated:NO];
[scrollView flashScrollIndicators];


-(void)viewWillAppear:(BOOL)animated

scrollView.frame = CGRectMake(0, 0, 320, 890);


- (void)didReceiveMemoryWarning

[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.

从 ScrollView 中调用 VC2 的 IBAction:

-(IBAction)previewSearch:(id)sender
   
VCcontactServer *VC2 = [[VCcontactServer alloc] init];
[[self navigationController] pushViewController:VC2 animated:YES];

【问题讨论】:

尝试检查scrollView的autoresizingMask 我尝试使用 scrollView.autoresizingMask = UIViewAutoresizingNone;并尝试使用 scrollView.autoresizingMask =(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);但同样的结果。顺便说一句,我在 viewDidLoad 中使用了这些命令。 快速且不好的解决方案是在 viewWillAppear 中为您的 scrollView 设置框架,但您必须弄清楚为什么您的 scrollView 会调整大小。可能是您的滚动视图的超级视图没有正确调整大小?如果您发布代码,在哪里创建滚动视图,在哪里将其添加到子视图和您的 loadView、viewDidLoad 以及如果您有 viewDidAppear/Disappear,那就更好了 安德烈,你的工作很快。我仍然不知道为什么我会遇到这个问题。到目前为止,这都是非常标准的代码,没有真正的修改或添加。如果您对我的问题做出适当的回答,我会很乐意为您提供答案。谢谢。 你添加你的scrollView到self.view吗?它在界面生成器中吗?如果是,请尝试在 loadView 中手动创建 ScrollView,如果您的问题会消失,那么您应该更改 xib 中的一些属性。否则,您在其他地方做某事,我们需要更多您的代码,您可以在其中处理 scrollView 并且它是超级视图。 【参考方案1】:

正确答案的功劳归安德烈·索洛维耶夫所有,但不幸的是,他没有发帖让我给他功劳。添加代码:

-(void)viewWillAppear:(BOOL)animated

scrollView.frame = CGRectMake(0, 0, 320, 890);

如前所述修复了问题。问题的根源最终变得有点复杂,超出了我的问题范围。

【讨论】:

以上是关于UIScrollview 第二次无法正确显示的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发 首次启动显示用户引导,第二次启动直接进入App,UIScrollView,UIPageControl,NSUserDefaults

Swift - 第二次加载后 Tableview 无法正确重新加载

即使 DB 已正确更新,React UI 也不会在单击时重新呈现。第二次点击后,UI 重新渲染

UITableView 内的 UIScrollView 无法正确显示/隐藏(Xcode iPhone)

UIScrollView 跨设备 UI 兼容性

UIScrollView,分页和旋转:旋转后第二个视图未正确对齐