gpt4 book ai didi

ios - 启动屏幕后 UISCrollView 的奇怪行为

转载 作者:行者123 更新时间:2023-11-29 03:53:03 25 4
gpt4 key购买 nike

一个 UISCrollview 发生了一些奇怪的事情。

我的方案是 MainView -> ScrollView -> ViewScrollView

- (void)viewDidAppear:(BOOL)animated{

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate];
if (appDelegate.first_time ) {
NSLog(@"First time.We need to feed sqlite.");

[self showSplash];

appDelegate.first_time = false;
}

_scrollView.contentSize = CGSizeMake(768*2, 870);
[_scrollView setScrollEnabled:YES];

... other stuff
}

应用程序加载并且 ScrollView 运行良好。 完全没有问题。

我遇到的独特问题是应用程序第一次运行。它需要下载一些巨大的文件来提供 ipad 的 sqlite 数据库,它可能非常慢(它必须下载大约 10Mb),所以我创建了一个启动屏幕,显示需要多长时间,下载了多少内容等。 ..

如代码所示,我将其加载为 [self showSplash];

#pragma mark splash screen
- (void)showSplash {

NSLog(@"showSplash");

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
modalSplashScreenViewController *sfvc = [storyboard instantiateViewControllerWithIdentifier:@"modalSplashScreenViewController"];
sfvc.delegate = (id)self;
[sfvc setModalPresentationStyle:UIModalPresentationFullScreen];
[self presentViewController:sfvc animated:NO completion:nil];
}

它按预期显示启动屏幕并开始下载

- (void)viewDidAppear:(BOOL)animated{

hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.mode = MBProgressHUDModeIndeterminate;
hud.dimBackground = YES;
hud.labelText = @"Loading";
hud.detailsLabelText = @"updating data";
hud.delegate = self;

[hud showWhileExecuting:@selector(feed_it) onTarget:self withObject:nil animated:YES];
}
- (void)feed_it{
// feeds sqlite
// when has finished closes the view.
[self dismissViewControllerAnimated:YES completion:nil];
}

隐藏启动屏幕后,UIScrollView 不会滚动。

这是我从“ViewDidAppear”末尾获得的日志文件,该文件在启动屏幕关闭后调用。(如果我第二次运行该应用程序但没有出现启动屏幕,则情况完全相同)

_viewScrollView frame width  1536.000000 frame origin.x 0.000000
_viewScrollView frame height 870.000000 frame origin.y 0.000000
_scrollview frame width 768.000000 frame origin.x 0.000000
_scrollview frame height 870.000000 frame origin.y 45.000000
_scrollView.contentSize.width 1536.000000 height:870.000000
_scrollView.contentOffset.x 0.000000 y:0.000000
_scrollView.bounds.size.width 768.000000 height 870.000000
_scrollView.intrinsicContentSize.width -1.000000
_scrollView.contentSize.width 1536.000000 height:870.000000

不加载闪屏它可以工作,加载后就不行了。

有人知道发生了什么事吗?

最佳答案

终于解决了。这是我在 XCode 中见过的最奇怪的事情。

我在这个应用程序中有很多使用 Storyboard转场的模态视图,当我返回主视图时, ScrollView 完美地工作,所以我尝试用转场显示启动屏幕而不是对其进行编码,并且,MAGIC !成功了!

深入研究代码,我发现了两者之间的独特区别

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
modalSplashScreenViewController *sfvc = [storyboard instantiateViewControllerWithIdentifier:@"modalSplashScreenViewController"];
sfvc.delegate = (id)self;
[sfvc setModalPresentationStyle:UIModalPresentationFullScreen];
[self presentViewController:sfvc animated:NO completion:nil];

segue 方法是: modalPresentationStyle,

在 IDE 上,我选择了“Page Sheet”,并在代码方式中选择了 UIModalPresentationFullScreen。

因此,将所有代码恢复到我在这里提出问题的那一刻,并进行更改

[sfvc setModalPresentationStyle:UIModalPresentationFullScreen];

对于

[sfvc setModalPresentationStyle:UIModalPresentationPageSheet];

ScrollView 再次完美运行。

谁能解释一下为什么会发生这种情况?也许是一个错误?

关于ios - 启动屏幕后 UISCrollView 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16842525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com