簡體   English   中英

故事板中的視圖過多-Xcode運行緩慢

[英]Too many views in storyboard - Xcode running Slow

我正在幫助某人進行xcode項目,但這幾乎是不可能的。 他們的故事板上有大約100個View控制器,而且運行速度非常慢。 我遵循了所有有關使Xcode更快的指南,但是它們對於這種情況無濟於事。 在該情節提要之外,當我們在.h和.m文件中工作時,它運行良好,位於情節提要中,運行緩慢。 有沒有人有過這樣的項目經驗? 你做了什么? 或者我該怎么做才能在情節提要中工作? 謝謝

我的解決方案是:從情節提要中打開一個新窗口並將其最小化。 因此它保留在RAM中,不會重新加載。 現在,使用情節提要板可以輕松快捷地進行工作。

在開發企業應用程序時,我遇到了同樣的問題。 在項目中,我只有一個storyboard ,所有視圖都放在一個情節提要中。 打開情節提要導致Xcode變得非常慢。

因此,我按模塊方式將情節提要板分為多個情節提要板,並按以下代碼在每個模塊中加載一個單獨的情節提要板:

如果我想推送視圖控制器:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"storyboardName" 
                                                     bundle:nil];
UIViewController *viewController = 
 [storyboard instantiateViewControllerWithIdentifier:@"Members_ViewController"];

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

我們遇到了同樣的問題,通常推薦的性能調整無濟於事。 在帶有SSD的MacBook Pro上,在情節提要視圖中,我發現CPU利用率達到80-90%,並且導航滯后非常令人沮喪。 模擬器最多可能需要一分鍾才能顯示,並且Xcode經常無法關閉,這需要強制退出。

如果不查看情節提要或將情節提要作為源代碼打開,這些症狀將全部消失。

更新:我們將項目分為多個情節提要,並且生活再次愉快-CPU利用率恢復到個位數,並且性能與Xcode 4.6.3相當。 較大的故事板肯定存在問題; 在此過程中,對我們的代碼所做的唯一更改是將對主故事板的引用更新為storyboardWithName調用。

我們項目中的一個視圖控制器具有容器視圖,並且當該控制器及其容器視圖移到單獨的情節提要板上時,似乎停止了使用問題。 這可能是一個巧合,為了保持一致性,我們分解了故事板的其余部分,但是如果我再次處理此問題,我首先將帶有容器視圖的所有視圖控制器移到單獨的故事板。

如果您使用的是Xcode 7,則情節提要引用是創建多個情節提要的快速方法,肯定會解決此問題。 使用情節提要引用的好處是,它不涉及任何額外的代碼! 有關如何設置它的完整說明,請參見下面的stackoverflow鏈接。

在此處輸入圖片說明 https://stackoverflow.com/a/30772789/3316842

我正面臨着同樣的問題。 令人沮喪。 我的情節提要只有41次觀看。 我正在運行以2.3Ghz運行的Mac Min i7。 打開故事板后,花很長時間才能完成一些非常簡單的任務,例如移動UILABEL? 然后,在對應視圖中,編輯代碼就像回到ZX81上一樣。 在情節提要中很好地敲響“智能”,但不以開發效率為代價。 就情節提要的“大小”准則而言,我從未記得閱讀過必須將情節提要划分成一定大小以外的內容。 也許我需要閱讀更多內容。

為了進行所需的更改,即拆分情節提要,將一些VC打在幾個情節提要上,將需要一些麻煩。 我想如果這是新的最佳做法,那就好。 但是我可以做的不只是猜測。

我也同意在多個故事板上組織您的觀點。 當您有一個從其他幾個視圖調用的視圖時,它將變得非常方便。 然后,情節提要可能變得像面食一樣,不清楚。 就我而言,我有一個可以從多個視圖調用的相機視圖,將其放在新的故事板上,效果很好。 由於攝影機視圖也指向搜索順序視圖,因此我不得不將搜索順序視圖也放置在單獨的情節提要上。 同樣,我的主要故事板變得更加簡單。

因此,要有一個主故事板,並盡可能將其分離到單獨的故事板上。 我做了一個通用的StoryStoryNavigation類,在其中集中了所有功能來調用子情節圖板。

這是一個例子:

此功能導航到名為OrderLookupStoryboard的情節提要,並在開始位置打開視圖。

+(void) NavigateToOrderLookupFrom:(UIViewController *)vc
{
    UIStoryboard * sb = [UIStoryboard storyboardWithName:@"OrderLookupStoryboard" bundle:nil];
    UIViewController * vcTo = [sb instantiateInitialViewController];

    [UIView transitionWithView:vc.view duration:0.8     options:UIViewAnimationOptionTransitionCrossDissolve
                animations:^{
                    [vc.navigationController pushViewController:vcTo animated:NO];
                }
                completion:NULL];

}

此函數將一些參數傳遞到情節提要。

+(void) NavigateToCameraFrom:(UIViewController *)vc WithSelectedZone:(int)selectedZone
{
    UIStoryboard * sb = [UIStoryboard storyboardWithName:@"CameraStoryboard" bundle:nil];
    MediaCapture * vcTo = [sb instantiateInitialViewController];
    vcTo.selectedZone = selectedZone;
    vcTo.zoneSet = YES;
    [UIView transitionWithView:vc.view duration:0.8 options:UIViewAnimationOptionTransitionCrossDissolve
                animations:^{
                    [vc.navigationController pushViewController:vcTo animated:NO];
                }
                completion:NULL];

}

此函數以模塊過渡樣式打開視圖:

+(void) NavigateToSignatureFrom:(UIViewController *)vc withSignee:(NSString *) Signee
{
   UIStoryboard * sb = [UIStoryboard storyboardWithName:@"SignatureStoryboard" bundle:nil];
   UIViewController * vcTo = [sb instantiateInitialViewController];

   ((SignatureVC *) vcTo).Signee = Signee;

   [vcTo setModalTransitionStyle:UIModalTransitionStylePartialCurl];
   [vc presentViewController:vcTo animated:YES completion:nil];
}

我想補充一點,當使用帶有導航控制器的容器視圖時,情節提要板響應緩慢,我遇到了問題。 我什至嘗試將其放在自己的情節提要中,但它仍然是如此緩慢,以至於我什至無法使用它。 似乎當容器視圖調整導航控制器的大小時,導航欄引起了問題。

通過選擇情節提要中的導航控制器,通過取消選中屬性檢查器中的“顯示導航欄”並在我的視圖控制器類的viewDidLoad或viewWillAppear中使用“ isNavigationBarHidden = false”,可以隱藏導航欄,從而可以解決此問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM