iOS - MPMediaPickerController - 改变 barStyle

Posted

技术标签:

【中文标题】iOS - MPMediaPickerController - 改变 barStyle【英文标题】:iOS - MPMediaPickerController - change barStyle 【发布时间】:2011-09-05 19:03:30 【问题描述】:

我到处寻找,似乎找不到有效的解决方案......

我正在开发一个应用程序,它使用 MPMediaPickerController 并创建一个允许用户选择要播放的歌曲的模态视图。我的主视图有一个 blackOpaque barStyle,我希望 Picker 也有相同的,但我似乎无法改变我尝试过的 barStyle 或颜色。这是代码sn-p:

-(IBAction)showMediaBrowser:(id)sender  
// Create a MediaPickerController object (alloc) and initialize with ONLY music type media
mediaPicker = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeMusic];

// CK - Set properties
mediaPicker.delegate = self;
mediaPicker.prompt = @"Choose your song:";
mediaPicker.navigationController.toolbar.barStyle = UIBarStyleBlackOpaque;

// CK - Present the model view and animate
[self presentModalViewController:mediaPicker animated:YES]; 

谢谢

【问题讨论】:

如果navigationControllernil,请尝试使用[mediaPicker loadView] 强制它加载视图。然后设置您的工具栏样式。如果不是nil,它可能会在默认加载/显示行为期间被覆盖。尝试在presentModalViewController:animated: 之后设置工具栏样式,同时使用animated:YESanimated:NO 【参考方案1】:

在您尝试设置工具栏样式的时间点,媒体选择器可能(很可能)没有导航工具栏。你检查过mediaPicker.navigationController 有值吗?

我建议将媒体选择器控制器嵌入到您自己的视图层次结构中(docs for MPMediaPickerController 表示这是可能的),然后您将可以从自己的视图控制器中完全控制导航栏。

// create media picker controller
mediaPicker = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeMusic];

// set properties
mediaPicker.delegate = self;
mediaPicker.prompt = @"Choose your song:";

// get the media picker's view and set its frame
UIView *pickerView = mediaPicker.view;
pickerView.frame = myViewController.view.frame;

// add the media picker view to the view hierarchy
[myViewController.view addSubview:pickerView];

【讨论】:

以上是关于iOS - MPMediaPickerController - 改变 barStyle的主要内容,如果未能解决你的问题,请参考以下文章

IO复用阻塞IO非阻塞IO同步IO异步IO

四种IO模型‘阻塞IO/非阻塞IO/信号驱动IO/异步IO‘

5种IO模型阻塞IO和非阻塞IO同步IO和异步IO

网络IO模型:同步IO和异步IO,阻塞IO和非阻塞IO

同步IO异步IO阻塞IO非阻塞IO之间的联系与区别

同步IO异步IO阻塞IO非阻塞IO之间的联系与区别