首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何减少MPMediaPickerController加载时间?

如何减少MPMediaPickerController加载时间?
EN

Stack Overflow用户
提问于 2014-06-23 21:51:53
回答 3查看 562关注 0票数 0

在我的项目中,我使用MPMediaPickerController从设备音乐库中选取一个文件。我使用下面这段代码来显示媒体选择器。

代码语言:javascript
复制
     MPMediaPickerController *mediaPicker = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeMusic];
     mediaPicker.delegate = self;
     mediaPicker.prompt = @"Select a personal message";

     [self presentViewController:mediaPicker animated:NO completion:nil];

一切正常,但MediaPickerController需要几秒钟(2到3秒)才能显示音乐库。有什么方法可以减少MPMediaPickerController的加载时间吗?在点击upload按钮之后的这种延迟确实是一个糟糕的用户体验。

EN

回答 3

Stack Overflow用户

发布于 2014-06-24 01:23:22

你什么也做不了。如果有很多音乐,则需要时间来检查所有音乐并准备控制器,这就是全部内容。这与用户首次尝试使用音乐应用程序时的延迟没有什么不同。您也许可以通过禁用showsCloudItems来减少显示的材质数量,但即使这样也可能没有帮助。

你能做的最好的事情可能就是尝试从心理上掩盖延迟,比如让用户看到一些东西,比如旋转的活动指示器,直到一切就绪。然而,我还没有用MPMediaPickerController尝试过这一点(我已经用我自己的音乐库探索界面做到了这一点,它也有同样的延迟问题)。

票数 1
EN

Stack Overflow用户

发布于 2016-03-08 04:40:53

我注意到我的MediaPickerController也非常慢(在我当前的项目中,使用Swift 2.2),尽管它在项目早期相当快(而且我后来添加的大部分代码都是网络代码)。

在我的代码中,只有当用户点击我的“查找歌曲”按钮时,我才实例化MPMediaPickerController。通过在主视图加载时创建MPMediaPickerController的实例(我将其放在类声明中,在viewDidLoad之外),我能够(以某种方式)将加载时间缩短到不到一秒(然而,当我在最后一秒实例化MPMediaPickerController时,它有时甚至没有出现)。

TLDR:编写以下代码:

代码语言:javascript
复制
import UIKit
import MediaPlayer
import MobileCoreServices

class SomeViewController: UIViewController, MPMediaPickerControllerDelegate {

    var mediaPickerController = MPMediaPickerController(mediaTypes: .AnyAudio)

    func viewDidLoad() {
        mediaPickerController.delegate = self
        mediaPickerController.prompt = "Select a song that you like"
    }

    @IBAction func buttonWasTapped(sender: AnyObject) {
        self.presentViewController(mediaPickerController, animated: true, completion: nil)
    }
}

而不是这样:(请注意,我只在点击按钮后才实例化mediaPickerController。

代码语言:javascript
复制
import UIKit
import MediaPlayer
import MobileCoreServices

class SomeViewController: UIViewController, MPMediaPickerControllerDelegate {


    func viewDidLoad() {

    }

    @IBAction func buttonWasTapped(sender: AnyObject) {
        var mediaPickerController = MPMediaPickerController(mediaTypes: .AnyAudio)
            mediaPickerController.delegate = self
            mediaPickerController.prompt = "Select a song that you like"
        self.presentViewController(mediaPickerController, animated: true, completion: nil)
    }
}
票数 1
EN

Stack Overflow用户

发布于 2015-03-31 00:16:17

正如matt建议的那样,旋转活动指示器真的可以帮助用户体验,因为它让用户放心,它正在工作,并且没有崩溃。当我从音乐库加载一首曲目时,我使用了MBProgressHUD

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24367734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档