【问题标题】:iPhone MPMoviePlayer obtain buttons viewiPhone MPMoviePlayer 获取按钮视图
【发布时间】:2009-11-16 18:28:36
【问题描述】:

谁能建议我如何从“MPMoviePlayer”获取包含所有按钮的视图?

如果你不知道,至少你是如何获得 MPMoviePlayer 的主视图/窗口的。

更新:我需要这样做才能在控制器视图上添加一个按钮。它看起来像这样: Example http://img338.imageshack.us/img338/5184/poz.jpg

提前致谢!

【问题讨论】:

  • 如果您告诉我们您想要做什么,我们可以提供更好的帮助。
  • 谁能给点建议?

标签: iphone objective-c controls mpmovieplayer


【解决方案1】:

您不能将它直接添加到 MPMoviePlayerController 的视图中——这是一个私有视图,无法访问。如果要添加按钮,则需要在所有内容的顶部创建一个透明窗口并将按钮添加到其中。

Apple 的 MoviePlayer 示例显示了如何执行此操作。

【讨论】:

  • 上面的截图来自 AppStore 的一个应用。
  • 直到,如果您要更加注意,您将在栏上设置“查找”按钮,而不是在单独的窗口中。当控件消失时,按钮消失。此外,Next/Prev 按钮被禁用。
  • MPMovieControlModeHidden + 类似原始界面的自定义叠加窗口
  • mxg... 搜索按钮不在栏上。当发送指示控件正在消失的 NSNotification 时,它在一个单独的、不可见的窗口中浮动在淡出的栏上。它看起来就像它在酒吧里,但这只是由于小心放置。
  • 为了强化我的观点——非常仔细地查看“Seek”按钮上的光泽渐变亮度。请注意,它与缩放按钮不同——因为“Seek”按钮不是同时绘制的。
【解决方案2】:

上面的答案其实是不正确的:视图不是私有的,你可以给它添加视图。你只需要潜得足够深就能找到它。

例如,在 iOS 5.1 中,您可以尝试这样的操作:

UIView *fullscreenOverlayView = [[[[[[[mpPlayer view] subviews] objectAtIndex:0] subviews] objectAtIndex:0] subviews] objectAtIndex:2];
[fullscreenOverlayView addSubview:ccButton];

这将在视图中添加一个 CC 按钮,如果您为 CC 按钮的框架指定了正确的值,它将将该按钮插入控制面板,并通过触摸控制面板隐藏/显示它。仅供参考:这是我使用的框架:

BOOL isPortrait = UIInterfaceOrientationIsPortrait([UIApplication sharedApplication].statusBarOrientation);

// all of these values are just based on measurement on screen
// to make sure that the CC button "seems" to be part of the player's control panel
if (isPortrait)
{
    return CGRectMake(222, 880, 40, 40);
}
else {
    return CGRectMake(350, 625, 40, 40);
}

注意:[mpPlayer view] 的子视图集对于不同的 iOS 版本是不同的,因此仅将其视为一种解决方法。无法保证这将在 iOS 6 上运行,并且会在 iOS 4.3 上崩溃。

【讨论】:

  • 澄清一下,fullscreenOverlayView 实际上是包含所有控制按钮的视图。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-18
  • 1970-01-01
  • 2010-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多