如何旋转 UIWebView 嵌入视频

2024-01-08

所以我正在构建的应用程序遇到了这个问题,我无法弄清楚。 我的应用程序具有以下结构:

UITabBarController -> UIViewController -> UIViewController

最后一个视图控制器包含一个加载整个页面的 UIWebView。在该页面中,有一个电影(mp4),用户可以在点击大圆形播放按钮后播放。

该应用程序被设计为以纵向模式运行,并且由于它的初始设计,我无法以其他方式运行它。

我想要实现的是让用户在电影开始播放后旋转手机并相应地旋转电影。我已经通过监听 NSNotificationsCenter 发送的不同 NSNotifications 设法“检测”电影何时播放。

我用它来检测开始:

[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(movieIsPlaying:)
name:@"UIMoviePlayerControllerDidEnterFullscreenNotification"
object:nil];

这是为了检测结束:

[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(movieStopedPlaying:)
name:@"UIMoviePlayerControllerDidExitFullscreenNotification"
object:nil];

现在,有了 2 个选择器,我将一个全局变量设置为 YES 或 NO,稍后我可以使用它

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation

如果我总是从上述方法返回 YES,我的应用程序界面将在每个屏幕上旋转,除非电影启动并运行。最奇怪的是:

  • 我以纵向方式打开应用程序。
  • 转到所需的页面(请参阅上面我的结构)
  • 将手机旋转至横向(界面旋转-这只是为了调试)
  • 我开始播放电影(它以横向模式启动!万岁!)
  • 我将手机旋转回纵向(电影旋转!万岁!)
  • 我将手机旋转回横向(不再发生旋转......)

另外,如果我以纵向模式启动电影,它永远不会旋转。

Update

最后我针对上述两种方法提出了这个解决方案:

- (void)movieIsPlaying:(NSNotification *)notification
{
    if (![Globals canRotateInterface]) {
        [Globals setCanRotateInterface:YES];
        
        [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:NO];
                
        [[[[notification object] view] window] setBounds:CGRectMake(0, 0, 480, 320)];
        [[[[notification object] view] window] setCenter:CGPointMake(160, 240)];
        [[[[notification object] view] window] setTransform:CGAffineTransformMakeRotation(M_PI / 2)];
    }
}

- (void)movieStopedPlaying:(NSNotification *)notification
{   
    if ([Globals canRotateInterface]) {
        [Globals setCanRotateInterface:NO];
        
        [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait animated:NO];
        
        [[[[notification object] view] window] setBounds:CGRectMake(0, 0, 320, 480)];
        [[[[notification object] view] window] setTransform:CGAffineTransformIdentity];
                    
        // Little hack to force an orientation rotation so that all elements get their original size and place (eg. Navigation bar)
        UINavigationController *dummyNavigationViewController = [[UINavigationController alloc] init];
        [self presentModalViewController:dummyNavigationViewController animated:NO];
        [self dismissModalViewControllerAnimated:NO];
        [dummyNavigationViewController release];
    }
}

我最终所做的是使用提到的 2 个通知来检测用户何时播放或停止电影,并使用将窗口旋转 90 度的代码。这样,用户只能以横向模式观看电影,但比仅以纵向模式观看要好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何旋转 UIWebView 嵌入视频 的相关文章

  • 如何在 iPhone 应用程序中运行进程而不阻塞用户界面

    我正在 iPhone 上访问照片库 需要很长时间才能导入我在应用程序中选择的图片 如何在辅助线程上运行该进程 或者我应该使用什么解决方案来不阻塞用户界面 我在这里使用 PerformSelectOnBackground 或 GCD 对示例代
  • 如何在 Xcode 中找到特定函数(如 eclipse 的调用层次结构)的所有调用函数?

    我如何在 XCode 中找到特定函数的所有调用函数 例如 eclipse 的调用层次结构 自 XCode 4 4 发布以来 此功能就存在并称为 显示相关项目 有多种方法可以访问弹出菜单 使您可以查看所有呼叫者和被呼叫者等 最快的方法是 在代
  • UITableView 滚动缓慢

    编辑 我在英语记录上做了相同的代码 滚动速度仍然像往常一样快 并且工作正常 但是当我获取阿拉伯语数据时 滚动又变慢了 这是阿拉伯数据的问题吗 我有大约 100 条记录 我的 tableview 滚动非常慢 谁能告诉我这段代码有什么问题 为什
  • NSString 到 Double 问题

    可能很简单 但我不明白 我有一个 NSString50 81114我想把它转换成双 目前我正在使用 string doubleValue 但这是作为50 811140000002这是怎么回事 Disco 由于精度有限double无法存储50
  • 使用 UIImage 和 caf 创建视频文件的问题

    我已经阅读了在互联网上可以找到的所有关于此功能的帖子 并且我在创建视频文件方面取得了一些成功 但我还剩下 3 个问题 而且似乎没有人提到过这一点 我有 3 个问题 视频在某些播放器上无法正常播放 quicktime window 视频只播放
  • IO 和 Android 之间发送数据? (字节数组)

    我正在 Android 中开发一个网络应用程序 它应该能够与 IO 应用程序进行通信 我正在使用 Appwarps 多人游戏后端 并且有一个发送和接收数据的功能 该函数接受一个字节数组 所以最初我认为我可以将一个 消息 对象序列化为一个字节
  • NSDate 返回错误的年份

    在 MyappAppDelegate m 文件中的 application didFinishLaunchingWithOptions 方法中 我刚刚写道 NSDateFormatter df NSDateFormatter alloc i
  • 在采取行动之前如何知道几个块是否已经执行完毕?

    我在用着animateWithDuration animations completion 之前移动用户界面的几个元素 大约 4 个元素 removeFromSuperview 叫做 我的问题是 我怎么知道在调用之前所有这些动画都已完成re
  • 如何通过 HTTP POST 发送充满对象的 NSArray?

    我在 iPhone 端有一个产品 购物清单 由具有名称 product id 等的产品对象组成 我希望将此列表发送到服务器 在那里我将服务器上的列表与 iphone 中的列表进行比较 以合并所做的更改并将合并的列表发送回 iphone 如何
  • 如何在 SWIFT 中实现 Objective-C 回调处理程序?

    目标c代码如下所示 void signInAccountWithUserName NSString userName password NSString password completion void BOOL success compl
  • 显示键盘时 Admob 广告不会出现在 UITableView 页脚中

    我用它在 UITableView 的页脚上显示 Admob 广告 UIView tableView UITableView tableView viewForFooterInSection NSInteger section GADBann
  • iphone facebook app 如何修复导航栏

    我是 iPhone 开发新手 想询问有关导航控制器的问题 如何使导航控制器固定在整个应用程序上 例如 Facebook 导航栏 它始终在导航栏中显示通知 好友和消息 我试图将自定义视图放入 titleView 但每次导航推送新视图时它都会消
  • 围绕另一个点旋转一个点

    我的任务是绘制特定图形 作为此任务的一部分 我需要将一些点旋转 45 度 我已经花了两天时间尝试计算公式 但就是无法得到正确的结果 我一直在到处搜索 包括这个特定的网站 我已经非常接近了 但我仍然不在那里 这里是 我需要画4个不同的点 我有
  • HTML 5 视频:使用 javascript 播放多个“剪辑”

    我在 HTML 视频和 JavaScript 方面遇到问题 因此编写了一些简单的代码来演示 有一个视频包含三个 剪辑 全长五秒 显然 在现实世界中 它们要长得多 一个在 25 30 秒 一个在 55 60 秒 最后一个在 85 90 秒 我
  • 如何在当前时间添加时间

    我对这个问题很困惑 我想抓取当前时间 而不是根据条件 我想将所需的时间添加到当前时间 例如 current time 06 47 10 or should i hv to change this format to 2011 03 26 0
  • 在 iPhone 中创建类似 facebook 菜单导航的视图 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我需要在我的 iPhone 应用程序中创建如下所示的视图 我不知道该怎么做 视图描述 如果我按下视图中箭头指示的按钮图标 则会出现一个新视
  • IOS Box2D - 身体遵循基于速度波动的点数组的特定路径

    我有一个关于身体的问题 它遵循特定的路径 首先是将身体移动到目标点的方法 const float destinationControl 0 3f b2Vec2 targetPosition path counter b2Vec2 missi
  • NSString 的 UTF8String 的 CFString 等价物是什么?

    今天我陷入了僵化状态 因为我无法将一段简单的 ObjC 代码转换为其等效的 Cpp 代码 我有这个 const UInt8 myBuffer NSString aRequest UTF8String 我正在尝试用以下内容替换它 const
  • 在 iOS 7 中创建 UUID 和 UDID

    我想创建 UUID 我下面有可以创建 UUID 的代码 如何在 iOS7 中创建具有多个供应商相同 ID 的 UDID NSString stringWithNewUUID CFUUIDRef uuidObj CFUUIDCreate ni
  • iPhone OpenGLES 2.0 文本纹理带有奇怪的边框(不是笔划)问题

    我正在使用 CoreGraphcis 创建文本纹理 不幸的是 文本呈现如下 文本颜色与背景相同以展示奇怪的边框 我尝试过使用描边颜色和边框 我认为这是针对 OpenGLES 2 0 而不是 CoreGraphics Create defau

随机推荐

  • 如何在WPF中实现Image.Clone()?

    我从 db 获取一个字节数组 byte 并使用以下方法渲染到图像控件中 public Image BinaryImageFromByteConverter byte valueImage Image img new Image byte b
  • 在 D3 中编码链式转换的紧凑方法

    我必须应用两个长的链式转换序列 它们主要在某些元素上的转换顺序上有所不同 并且我正在寻找一种紧凑的编码方式 假设 仅作为玩具示例 我有两个圆圈 并且必须将以下颜色应用于第一个圆圈 orange gt purple gt blue gt ye
  • 打开应用程序并更改方向时防止动态壁纸方向发生变化?

    我编写的动态壁纸遇到方向问题 基本上 画布将根据其上方打开的应用程序进行旋转 我对此进行了测试 并意识到当我从之前打开的方向已更改的应用程序返回主屏幕时 onSurfaceChanged 方法将被触发 我想更好的问题是 为什么当应用程序打开
  • 从技术上讲,对象可以占用不连续的存储字节吗?

    回答的同时这个问题 https stackoverflow com questions 39791806 array of non contiguous objects我被要求提供标准报价 我震惊地在 C 14 草案中发现 3 9 类型 b
  • 关于小端和大端的按位非运算符(C 中的 ~)

    这与家庭作业有关 但这不是家庭作业 我很难理解按位不是否存在差异 在C 中会受到影响signed int and unsigned int在大端机器和小端机器上编译时 是字节数really 向后 如果是这样 按位非 和其他运算符 会导致不同
  • 如何用多字符分隔符分割字符串?

    Delphi 是否有一个函数可以用多字符分隔符而不是单个字符来分割字符串 例如 当我以这种方式使用该函数时 SplitString Whale lt gt Mammal lt gt Ocean lt gt 我会得到这 3 个字符串的结果 W
  • 如何在r中设置插入图像的颜色

    有没有办法将图像插入到 R 的绘图中并在这样做时设置其颜色 我想为给定的数据集插入轮廓 并将其设置为与我选择用于绘制相应数据点的颜色相匹配 我对一般计算机系统和 R 中的图形管理方式没有深入的了解 这可能会告诉您这个问题的答案 下面的代码将
  • [电子邮件受保护]:权限被拒绝(公钥)

    我创建了一个新的远程存储库并尝试使用git push u origin master命令将我的本地文件推送到新存储库后第一次add it and commit它 然而 它弹出这个 email protected cdn cgi l emai
  • “没有 [Int64Index , 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,\n ...... dtype='int64 ')] 位于 [列] 中”

    我目前正在尝试对 pandas 数据框执行 KFold 从 csv 读取 pandas 文件 不幸的是我收到错误 没有 Int64Index 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 n
  • Ctrl Space 在 Win 7 上的 Eclipse Helios 中不起作用

    我最近从 Dev Env 转移到 Windows 7 上的 Eclipse Helios 此后 Ctrl Space 内容辅助功能不起作用 我发现该关键选项是由语言设置使用的 我已尝试禁用它 但在 Eclipse 中仍然不起作用 任何帮助深
  • 什么是 git 守护进程?

    什么是 git 守护进程 这是默认的 git 功能吗 我试图理解这一点 以便我可以在服务器上托管一个存储库 人们可以从中推送 拉取 到目前为止 我能够将 bare 存储库克隆到 Apache 服务器上 然后使用 update server
  • Mathematica 中的词法和动态作用域:带有 Module、With 和 Block 的局部变量

    以下代码如您所料返回 14 Block expr expr 2 z f z expr f 7 但如果你改变这一点Block to a Module然后它返回2 z 除了其他变量之外 其他变量似乎并不重要expr你本地化 我以为我理解 Mat
  • jquery val() contains()

    我想知道文本区域值是否包含某个单词 这对我不起作用 var value embedModal textarea val if value contains iframe 尝试 JavaScript if value indexOf ifra
  • 如何在 VBA 中的两个打开的 Excel 实例之间进行复制?

    我想将数据从一个已打开的 Excel 实例复制到 VBA 中的另一个 Excel 实例 我试过 Option Explicit Sub copy paste Dim destination sanitized As String Dim f
  • Objective-C 设置 nil 和释放 nil 的区别

    我了解到 在dealloc you do object release but in viewDidUnload 在 UIViewController 子类中 你做self object nil 真正的区别是什么 因为self object
  • 带有 Youtube API 的 Chrome 扩展程序显示不一致的结果

    我正在构建一个 chrome 扩展来使用 youtube 的 API 它是这样工作的 内容脚本会通过 manifest json 自动注入到每个 YouTube 页面上 permissions tabs http https
  • 脚本内的 match_query ? [弹性搜索]

    我有一个相当复杂的聚合 它的复杂性是由于缺少 has parent 聚合引起的 既然如此 它是使用groovy 实现的 我遇到的唯一问题是过滤聚合中计数的文档 聚合看起来像这样 https gist github com serj p c4
  • 将自定义字段添加到课程 Moodle [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我是 Moodle 新手 我需要您的建议来创建插件 该插件将在 添加 编辑课程 页面上添加自定义字段 并将输入值存储在mdl cour
  • Angular 2 SVG 未渲染

    我创建了一个组件来渲染我的应用程序中的 SVG 图像 它们是动态加载的 但是 我的演示应用程序仅显示一个更简单的版本 http plnkr co edit g2tZXeUAMJ5zESx2EHT0 p info http plnkr co
  • 如何旋转 UIWebView 嵌入视频

    所以我正在构建的应用程序遇到了这个问题 我无法弄清楚 我的应用程序具有以下结构 UITabBarController gt UIViewController gt UIViewController 最后一个视图控制器包含一个加载整个页面的