xcode 中只有一个视图自动旋转?

2023-12-04

好吧,我目前有 3 个视图,我只需要其中一个自动旋转到任何方向,而其余的保持纵向。现在我的设置是一个splashviewcontroller淡入视图A,内部视图A是一个切换到视图B的按钮。我想要的只是视图B能够旋转到任何方向。

当我在splashviewcontroller中为shouldautorotatetointerfaceorientation返回YES时,每个视图都会旋转,因为这是父视图。当我仅在启动视图中返回纵向时,即使其他视图返回“是”,也不会旋转。有没有办法只让视图 B 旋转?如果您可以提供代码,我愿意手动完成。谢谢


您可以手动管理任何所需 UIView 对象的旋转,如下所示:

EDIT:

在 init 或 viewDidLoad 中

- (void)viewDidLoad
{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(rotate) name:UIDeviceOrientationDidChangeNotification object:nil];

    [super viewDidLoad];
}

#define degreesToRadian(x) (M_PI * (x) / 180.0)

-(void)rotate{

    self.view.bounds = CGRectMake(0, 0, 0, 0);

    if ([UIDevice currentDevice].orientation == UIInterfaceOrientationPortrait){


        CGAffineTransform landscapeTransform = CGAffineTransformMakeRotation(degreesToRadian(0));
        landscapeTransform = CGAffineTransformTranslate (landscapeTransform, 0.0, 0.0);

        self.view.bounds = CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y, 320, 480);

        [self.view setTransform:landscapeTransform];


    } else if ([UIDevice currentDevice].orientation == UIInterfaceOrientationPortraitUpsideDown){


        CGAffineTransform landscapeTransform = CGAffineTransformMakeRotation(degreesToRadian(180));
        landscapeTransform = CGAffineTransformTranslate (landscapeTransform, 0.0, 0.0);

        self.view.bounds = CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y, 320, 480);

        [self.view setTransform:landscapeTransform];

    } else if ([UIDevice currentDevice].orientation == UIInterfaceOrientationLandscapeRight){

        CGAffineTransform landscapeTransform = CGAffineTransformMakeRotation(degreesToRadian(90));

         landscapeTransform = CGAffineTransformTranslate (landscapeTransform, 0.0, 0.0);
         self.view.bounds = CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y, 480, 320); 


        [self.view setTransform:landscapeTransform];

    }else if ([UIDevice currentDevice].orientation == UIInterfaceOrientationLandscapeLeft){

        CGAffineTransform landscapeTransform = CGAffineTransformMakeRotation(degreesToRadian(270));

        landscapeTransform = CGAffineTransformTranslate (landscapeTransform, 0.0, 0.0);
        self.view.bounds = CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y, 480, 320); 

        [self.view setTransform:landscapeTransform];
    }

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

xcode 中只有一个视图自动旋转? 的相关文章

随机推荐

  • 有没有办法提高FlyingSaucer的性能?

    我已经关注了本文使用 FlyingSaucer 将 XHTML 转换为 PDF 这很出色 但有一个重大缺点 速度慢得离谱 我发现从 XHTML 渲染 PDF 需要 1 到 2 分钟 无论该页面多么简单 基本代码 import java io
  • VBscript 代码捕获标准输出,而不显示控制台窗口

    这是一个 VBScript 代码示例 展示了如何捕获命令行程序发送到标准输出的任何内容 它执行命令xcopy 并在消息框中显示输出 在消息框出现之前 您会看到控制台窗口突然弹出 Set objShell WScript CreateObje
  • 使用指针了解数组的大小

    我如何使用使用 malloc 分配的指针知道数组的大小 include
  • Java:从字节数组中删除连续的零段

    例如 假设我想从数组中删除所有长度超过 3 个字节的连续 0 段 byte a 1 2 3 0 1 2 3 0 0 0 0 4 byte r magic a System out println r result 1 2 3 0 1 2 3
  • .NET 最好的音频压缩库是什么?

    我正在寻找一个好的 NET 音频压缩库 任何使用 MP3 的东西都已经过时了 因为许可问题 基本上我只需要能够将常规 WAV 音频数据压缩为某种格式 然后解压缩回 WAV 最好代码全部是 NET C 或 VB NET 但我认为这不太可能 它
  • 用于从 Google 表单获取平均分数和电子邮件的 Google 脚本(如测验)

    我需要一个 Google 脚本 GAS 来从已转换为测验的 Google 表单中检索电子邮件和总分 在GAS中你可以得到每个问题的分数 但我需要得到所有问题的分数 然后平均得出最终分数 每个测验有20个问题 我还需要每个完成测验的人的电子邮
  • R - ggplot 轴数字格式 - 删除前导零

    从 R ggplot geom bar 轴删除前导零的选项 代码是什么 即 我希望 0 05 显示为 0 05 我能找到的只是内置格式 如百分比 逗号等 thx 作为受 m evans 给出的答案启发的简单替代方案 可以使用以下方法轻松实现
  • 使用 Dataview.RowFilter 从 SomeTable 中选择 TOP 5 *?

    我需要从缓存的 Dataview 对象中选择最近的 5 行 有什么方法可以做到这一点吗 我已经尝试过 但索引器数据列是空的 public static DataView getLatestFourActive DataTable produ
  • 委托的构造函数和成员函数在哪里定义?

    当我在看的时候ActionReflector 中的委托 我看到它有一个像这样的构造函数 public Action object object IntPtr method 但我找不到任何机构以及其他成员职能 例如Invoke BeginIn
  • MYSQLI准备语句bind_param类型不起作用

    我已经使用准备好的插入语句好几年了 并假设它正确绑定了参数 否则会给出错误 但它似乎不像以下 php 绑定并插入记录而没有任何错误 而是将应该是 int 的字符串更改为零 因此 它可能可以防止 SQL 注入攻击 但最终会在表中得到虚假记录
  • Monotouch:在 iPhone 上关闭飞行模式后 WebRequest 连接失败

    我的单点触控应用程序正在与网络服务进行定期后台同步 它运行完美并正确检测飞行模式 当我关闭 WiFi 时 它会自动开始使用 WWAN GPRS 3G 连接 到目前为止 我非常满意 但是 关闭飞行模式后 当没有可用的 WiFi 时 我的应用程
  • 类型错误:列表索引必须是整数,而不是 str Python [重复]

    这个问题在这里已经有答案了 list s 是一个字符串 为什么这不起作用 出现以下错误 类型错误 列表索引必须是整数 而不是 str list abc def map list for s in list t list s 1 map li
  • 如果数组包含值,Mongoose 查找文档

    所以我有这个模式 const Document new mongoose Schema id type Number creationDate type Date default Date now title String status t
  • 致命错误:未捕获错误:调用未定义的函数 sqlsrv_connect()

    我正在尝试连接到我们可以通过 Microsoft SQL Server Management Studio 访问的 SQL Server 我已经尝试了很多我在 SO 上看到的不同的东西 但没有任何效果 我收到错误Fatal error Un
  • 从 TFS 迁移到 VSTS - 减少 TPC 数据库大小

    我们计划很快从本地 TFS 实例迁移到 VSTS 在迁移之前 我们运行先决条件的验证任务并获得有关 TPC 数据库大小的以下输出报告 数据库当前为 191GB 这超出了使用 DACPAC 导入方法时建议的 150GB 大小 当前最大表大小为
  • 使用 CSS 淡入淡出 div

    http jsfiddle net LJdAU o transition color 3s ease out background 5s ease in out ms transition color 3s ease out backgro
  • 不使用 XAML 将子项添加到 ListView

    如何将子项目添加到ListView 我需要动态生成所有内容 但我找到的每个示例都使用 XAML 非 WPF 就这么简单 ListViewItem lvi listview items add wahtever lvi blah blah b
  • 如何实现从非托管DLL到.net应用程序的回调接口?

    在我的下一个项目中 我想为 C 中已有的代码实现一个 GUI 我的计划是将 C 部分包装在 DLL 中 并用 C 实现 GUI 我的问题是我不知道如何实现从非托管 DLL 到托管 C 代码的回调 我已经在 C 中完成了一些开发 但托管代码和
  • 如何使用 PHPUnit 获得 100% 代码覆盖率

    我正在编写一个 Zend Framework 应用程序并使用 PHPUnit 对其进行单元测试 总的来说 事情进展顺利 但是我在 PHPUnit 和代码覆盖率方面遇到了一个小但烦人的问题 它有时告诉我特定的行没有经过测试 而且我不知道如何强
  • xcode 中只有一个视图自动旋转?

    好吧 我目前有 3 个视图 我只需要其中一个自动旋转到任何方向 而其余的保持纵向 现在我的设置是一个splashviewcontroller淡入视图A 内部视图A是一个切换到视图B的按钮 我想要的只是视图B能够旋转到任何方向 当我在spla