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];
谢谢
【问题讨论】:
如果navigationController
是nil
,请尝试使用[mediaPicker loadView]
强制它加载视图。然后设置您的工具栏样式。如果不是nil
,它可能会在默认加载/显示行为期间被覆盖。尝试在presentModalViewController:animated:
之后设置工具栏样式,同时使用animated:YES
和animated: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的主要内容,如果未能解决你的问题,请参考以下文章