导航到包含 ScrollView 的 ViewController 太慢了

     2023-02-23     63

关键词:

【中文标题】导航到包含 ScrollView 的 ViewController 太慢了【英文标题】:Navigating to ViewController containing ScrollView Going too Slow 【发布时间】:2016-01-18 07:55:50 【问题描述】:

这就是从 ViewController A 推送到 ViewController B 的方式

UIStoryboard *mainStory = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
ListingViewController *listView = [mainStory instantiateViewControllerWithIdentifier:@"listing"];

[self.navigationController pushViewController:listView animated:YES];

我也尝试过这种方式,在 StoryBoard 中使用 segue

[self performSegueWithIdentifier:@"Associate3" sender:sender];

第一次推送到这个 ViewController 在开始推送之前冻结(大约 4 秒),知道 VC B 在其 XIB 中包含 UIScrollView 对象,

你们中有人遇到过这种情况吗,有人知道如何解决这个延迟吗?

编辑:

我已经评论了所有的 web 服务调用方法,没有任何变化!我认为这是一个分配延迟,我正在使用带有标识符的故事板启动来推送 VC B,但是当我使用分配方法时:VC *B = [[VC alloc] init],然后推送到这个视图可以毫不拖延地工作,但是我不需要使用的问题分配方式!!

【问题讨论】:

您正在调用 ViewController B 中的任何 Web 服务? 是的,在视图加载读取 JSON 后调用 httprequest, viewDidLoad ViewController B的分享代码 但是当我推送到其他不包含 ScrollView 的视图 (HttpRequest) 时,我也在做同样的事情,它只是推送得很好,除了这个在其 IB 中有 ScrollView 的视图! @Samir 请在 viewDidAppear 而不是 viewDidLoad 中调用您的网络服务。我希望你能得到你的解决方案。 【参考方案1】:

终于找到问题了,是VC B标签中使用的自定义字体,只需将它们设置回系统字体而不是Roboto就解决了我的问题,我认为系统需要时间才能找到特定的字体姓名。希望这对其他人有用

【讨论】:

【参考方案2】:

您似乎在 ViewController B 的 ViewWillAppearViewDidLoad 中对 main thread 执行了一些繁重的操作

注释上述两种方法的完整代码,然后运行您的应用程序以验证应用程序中的问题。

因此,如果它经过验证,那么您必须将繁重的操作从 main thread 转移到 background thread

【讨论】:

尝试这样做,结果相同,我确定这都是关于我在 VC B 的 IB 中添加的 ScrollView 对象 好的,然后从 IB 中删除 ScrollView,然后分享您的结果。 再一次,什么都没有改变......这让我发疯了!! 这表明 ScrollView 与它无关,现在删除所有项目并尝试在其中使用单个 UILabel。 只在IB中留下标签,时间相同!【参考方案3】:

这可能是因为推送是在不同的线程中执行的。尝试在主线程中推送 viewController。即,将您的推送控制器代码替换为

dispatch_async(dispatch_get_main_queue(), ^
    UIStoryboard *mainStory = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    ListingViewController *listView = [mainStory instantiateViewControllerWithIdentifier:@"listing"];

    [self.navigationController pushViewController:listView animated:YES];
);

【讨论】:

【参考方案4】:

尝试在ListingViewController类中改viewDidLoad方法来调用async

- (void)viewDidLoad 
  [super viewDidLoad];

  dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^
  //move your code here
  // if you need to do something on ui (reload table view e.t.c) - call async in main thread
    dispatch_async(dispatch_get_main_queue(), ^
      //Your UI code
    );
  );

【讨论】:

同样的结果,没有任何变化,它应该是在点击按钮后直接执行操作,但在执行此操作前大约 3 秒冻结了!!!! 你有东西在 viewWillDisappear 吗? 如果你向我们展示你的代码,你在哪里调用网络服务会更好。 亲爱的,我已经评论了所有的webservice调用方法,没有任何改变!我认为这是一个分配延迟,我正在使用带有标识符的故事板启动来推送 VC B,但是当我使用分配方法时:VC *B = [[VC alloc] init],然后推送到这个视图它可以毫无延迟地工作,但是我不需要使用分配方法的问题!【参考方案5】:

您可以使用带有 Xcode 的开发人员工具“Instruments-Time Profiler”。它可以检查时间费用。那么,我想你会发现你的问题。

【讨论】:

我认为我无法理解它的结果,如果你有任何快速教程会很棒 1.打开 Xcode。 2. 选择 Xcode > 打开开发者工具 > 仪器。 3. 打开时间分析器。

添加到 ScrollView 的 UIView 不适合全屏,顶部有导航栏

】添加到ScrollView的UIView不适合全屏,顶部有导航栏【英文标题】:UIViewaddedtoScrollViewnotfittingfullscreenwithNavigationbaratthetop【发布时间】:2015-12-1208:26:45【问题描述】:编辑:我的问题的小更新,我现在作为解决方案所做的显然只是... 查看详情

ScrollView 触摸转发到 UINavigationController

】ScrollView触摸转发到UINavigationController【英文标题】:ScrollViewtouchforwardingtoUINavigationController【发布时间】:2011-12-1319:55:25【问题描述】:我想要做的是在导航栏上方放置一个滚动视图,但仍然让导航栏获得触摸输入。我查看了响... 查看详情

我可以使用具有不同 UIview 类而不是 UINavigationController 的水平 ScrollView 来导航到不同的视图控制器吗

...可以使用具有不同UIview类而不是UINavigationController的水平ScrollView来导航到不同的视图控制器吗【英文标题】:CanIusehorizontalScrollViewwithdifferentUIviewclassesinsteadofUINavigationControllertonavigatetodifferentviewcontrollers【发布时间】:2012-09-0713:52:... 查看详情

ViewPager里面的ScrollView,自动滚动到中间

】ViewPager里面的ScrollView,自动滚动到中间【英文标题】:ScrollViewinsideViewPager,scrollstomiddleautomatically【发布时间】:2013-04-1710:24:56【问题描述】:我有一个ViewPager,它包含同一个片段的多个实例,这个片段包含一篇文章。文章视... 查看详情

Android:包含 textInput 的 ScrollView 不滚动

】Android:包含textInput的ScrollView不滚动【英文标题】:Android:ScrollViewwhichcontainstextInputnotscrolling【发布时间】:2017-10-2023:06:18【问题描述】:我有一个包含太多文本输入的滚动视图。一切正常,直到我将textAlign:\'right\'添加到TextInpu... 查看详情

Qml:包含 ListView 的 ScrollView 不调整 ScrollBar 句柄

】Qml:包含ListView的ScrollView不调整ScrollBar句柄【英文标题】:Qml:ScrollViewcontainingaListViewdoesnotadjustScrollBarhandle【发布时间】:2020-02-0618:00:17【问题描述】:我正在尝试根据需要将垂直滚动条添加到ListView。有人告诉我,最好的方法... 查看详情

将 ScrollView 位置重置到页面顶部

】将ScrollView位置重置到页面顶部【英文标题】:ResettingScrollViewpositiontothetopofthepage【发布时间】:2021-06-0520:01:04【问题描述】:我正在尝试在视图出现时将滚动重置到页面顶部(例如,当您从导航链接返回时)。ScrollView嵌入在... 查看详情

SwiftUI:NavigationLink 内的水平 ScrollView 会中断导航

】SwiftUI:NavigationLink内的水平ScrollView会中断导航【英文标题】:SwiftUI:horizontalScrollViewinsideNavigationLinkbreaksnavigation【发布时间】:2020-10-2620:23:22【问题描述】:我想在List中使用简单的水平ScrollView作为NavigationLink。但是,点击Scroll... 查看详情

滚动总是从 ScrollView 的顶部开始?

】滚动总是从ScrollView的顶部开始?【英文标题】:ScrollalwaysstartonthetopinScrollView?【发布时间】:2011-03-3009:55:56【问题描述】:我有一个UITableView,所有行都导航到其他UIView,其中包括UIScrollView。有时当我导航它时,它会从视图的... 查看详情

将元素动态加载到 ScrollView

】将元素动态加载到ScrollView【英文标题】:DynamicallyloadelementstoaScrollView【发布时间】:2010-12-1820:32:30【问题描述】:我正在尝试创建动态可滚动视图。它将保留从服务器下载的元素列表。该列表可能包含数千个元素。由于这个... 查看详情

隐藏导航栏而不移动scrollView

】隐藏导航栏而不移动scrollView【英文标题】:HidenavigationbarwithoutmovingscrollView【发布时间】:2016-04-1510:48:36【问题描述】:我有一个viewController,在其中显示用于添加缩放功能的图像我在viewController和ScrollView中添加了scrollView我添... 查看详情

ScrollView 使用按钮转到特定内容

】ScrollView使用按钮转到特定内容【英文标题】:ScrollViewgoingtoaspecificcontentusingabutton【发布时间】:2016-10-0418:55:40【问题描述】:下午好我有一个视图控制器,其中包含菜单上的一些项目,当我单击其中一个项目时,我需要它直... 查看详情

如何将一个滚动视图图像选择到另一个滚动视图中?

...像选择到另一个滚动视图中?【英文标题】:HowtoselectOneScrollviewImageintoanotherScrollview?【发布时间】:2014-11-1409:58:32【问题描述】:我是iOSDevelopment的新手。在我的应用程序中包含两个Scrollview一个Scrollview大,一个是小Scrollview这里... 查看详情

Android ScrollView 自动滚动到视图底部

】AndroidScrollView自动滚动到视图底部【英文标题】:AndroidScrollViewautomaticallyscrollstothebottomoftheview【发布时间】:2016-04-2608:09:11【问题描述】:我创建了一个包含一个地图、图像和另一个文本视图的活动,并为它添加了“scrollview”... 查看详情

reactnative用scrollview简单实现吸顶隐藏导航栏

参考技术A在ScrollView顶部嵌套一个Nav导航栏和一个搜索框,stickyHeaderIndices=[1]让搜索框吸顶固定。此时已经可以实现吸顶,但还可处理一下,滑动一半便停下的情况。先给ref方便调用它的方法。onScrollEndDrag=this.onStop处理 查看详情

在页面之间隐藏时移动到 ScrollView 中的特定页面 - iOS

】在页面之间隐藏时移动到ScrollView中的特定页面-iOS【英文标题】:MovetoSpecificPageinScrollViewWhileHidingBetweenPages-iOS【发布时间】:2014-07-2313:50:36【问题描述】:我有5页的PagedUIScrollVIew。我有一个问题,当我点击一个按钮时,我需要... 查看详情

为啥模拟器中没有出现导航栏?

】为啥模拟器中没有出现导航栏?【英文标题】:WhyisthenavigationbarnotappearingintheSimulator?为什么模拟器中没有出现导航栏?【发布时间】:2018-09-1923:41:42【问题描述】:在我正在构建的应用程序中,我设置了一个导航控制器来控制... 查看详情

在 scrollView 内的 contentView 上设置约束

】在scrollView内的contentView上设置约束【英文标题】:settingconstraintsoncontentViewinsidescrollView【发布时间】:2015-09-1806:25:22【问题描述】:对于我的项目,我需要制作一个距顶部64pt高度的自定义菜单。因此,默认导航栏可见性设置为... 查看详情