如何在 iOS 上旋转自定义启动屏幕?

2023-12-28

我的启动屏幕可以正常工作,但我的应用程序可以在横向模式下运行,并且启动屏幕以默认的纵向模式显示。

如何启动应用程序,以便启动屏幕像我的应用程序一样在横向模式之间旋转?

我正在使用以下代码:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Overriden to allow any orientation.
if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft ||
    interfaceOrientation == UIInterfaceOrientationLandscapeRight)
    return YES;
else {
    return NO;  }
}

以及启动画面

-(void)displayScreen { 
UIViewController *displayViewController=[[UIViewController alloc] init];
displayViewController.view = displaySplashScreen;
[self presentModalViewController:displayViewController animated:NO];
[self performSelector:@selector(removeScreen) withObject:nil afterDelay:3.0];
} 
 -(void)removeScreen
{   [[self modalViewController] dismissModalViewControllerAnimated:YES];
}

但是如何将旋转放在显示屏内呢?


啊哈。如果您想显示自己的启动屏幕,您应该为此创建一个特殊的视图控制器,您已经这样做了。我认为你可以简化自动旋转查询代码:

- (BOOL) shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation) foo
{
    return YES; // all interface orientations supported
}

现在您必须考虑不同方向的启动屏幕。您有单独的横向和纵向启动图像吗?如果是,你可以这样做:

- (UIView*) startupImageWithOrientation: (UIInterfaceOrientation) io
{
    UIImage *img = [UIImage imageNamed:[NSString
        stringWithFormat:@"Default-%@.png", UIInterfaceOrientationName(io)]];
    UIView *view = [[UIImageView alloc] initWithImage:img];
    [view setFrame:[[UIScreen mainScreen] applicationFrame]];
    return [view autorelease];
}

- (void) loadView
{
    self.view = [self startupImageWithOrientation:self.interfaceOrientation];
}

- (void) willRotateToInterfaceOrientation: (UIInterfaceOrientation) io
    duration: (NSTimeInterval) duration
{
    self.view = [self startupImageWithOrientation:io];
    self.view.transform = CGAffineTransformFromUIOrientation(io);
}

有两个实用函数被调用,您可以将它们填充到一个单独的文件中:

NSString *UIInterfaceOrientationName(UIInterfaceOrientation io)
{
    return UIInterfaceOrientationIsPortrait(io) ? @"Portrait" : @"Landscape";
}

CGAffineTransform CGAffineTransformFromUIOrientation(UIInterfaceOrientation io)
{
    assert(io <= 4);
    // unknown, portrait, portrait u/d, landscape L, landscape R
    static float angles[] = {0, 0, M_PI, M_PI/2, -M_PI/2};
    return CGAffineTransformMakeRotation(angles[io]);
}

这有点混乱,我自己对更简单的解决方案感兴趣。

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

如何在 iOS 上旋转自定义启动屏幕? 的相关文章

  • 奇怪的父/子NSManagedObjectContext现象

    我创建了两个这样的上下文 create writer MOC privateWriterContext NSManagedObjectContext alloc initWithConcurrencyType NSPrivateQueueC
  • 如何无限地每1分钟运行一个iOS应用程序?

    我制作了一个应用程序 需要每 1 分钟向服务器发送一次位置和状态更新 我尝试了以下方法 但没有一个能帮助我 有什么解决办法吗 1 NSTimer 很多人建议这样做 但问题出在后台模式上 它只能工作 20 分钟 该应用程序停止发送数据后 2
  • 当自定义子视图处理触摸时防止 UITableView 滚动

    在我的 iOS 应用程序中 有一个 UITableView 其中一个单元格中包含一个自定义子视图 该单元格是一个交互式视图 它处理触摸事件 touchesBegan touchesEnded touchesMoved 以更新自身 问题是 当
  • 在 Swift 中使用 commitEditingStyle 动态删除 UITable 部分

    我正在处理一个无法解决的问题 我有一个来自客户数据库数组的名称表 每个客户在其他数据成员中都有一个名称属性 我可以成功删除某个部分中的行 但我不能删除该部分 当该部分中的最后一行被删除时 该部分必须消失 I got NSInternalIn
  • 有没有办法阻止 iOS 上的 Safari 在关闭时清除网站的 cookie?

    我的移动网络应用程序的一位用户抱怨说 每次他关闭手机屏幕后使用该应用程序时 他都必须重新登录该应用程序 发生的情况是 当屏幕关闭时 或者当您通过双击主页按钮并滑开 Safari 来完全关闭 Safari 时 Safari 会清除该网站的 C
  • 如何从 iOS 应用程序检测不安全的 wifi 网络

    我想检测我的应用程序中是否存在不安全的 wifi 网络 是否有任何公共 iOS API 可以实现相同的目的 没有记录的 API 可以获取该信息 如果您的应用程序需要通过网络发送和接收敏感数据 您通常应该假设没有安全连接
  • 为什么没有收到(UDP 多播)数据包?

    所以 我一直试图弄清楚为什么这不起作用 但我没有任何线索 我已经成功地从 iPhone 发送数据包并在 Mac 上接收它们 根据 tcpdump 我的 mac 正确发送数据包 此外 如果我在模拟器中运行它 它工作得很好 这让我相信这是一个网
  • CGContextSelectFont 等效项

    在 iOS 7 CGContext SelectFont 中已弃用 已弃用的消息说我必须使用 Core Text 但我不知道哪一个与这段代码完全相同 CGContextSelectFont context Helvetica kBarLab
  • 无法添加钥匙串项目。使用 KeychainItemWrapper 更改标识符后出现错误 - 25299?

    我想用 KeychainItemWrapper 将 UUID 保存在钥匙串中 所以我在中添加以下方法MyKeychainManager m define keychain idenentify com myapp bundle1 void
  • malloc:***错误:已释放对象的校验和不正确 - 对象可能在释放后被修改

    我的 iOS 应用程序有一个大问题 它有时会崩溃 而没有详细的调试错误 堆栈跟踪为空 这是堆栈跟踪中仅有的两行 UIApplicationMain 中的 符号存根 UIHostedTextServiceSession DismissText
  • 奇怪的行为与缓存。清单/离线使用网络应用程序保存到ipad ios6的主屏幕

    我刚刚在装有新 iOS 6 的 iPad 上发现了一些奇怪的行为 我正在测试一个用于离线使用的网络应用程序 Web 应用程序只不过是一个带有缓存清单的静态网站 因此没有使用像 sencha touch 这样的特殊框架或像 phnoegap
  • 你如何在react-native中实现捏合缩放?

    我一直在研究 PanResponder 我当前的工作假设是 我将检测是否有两个触摸正在向外移动 如果是 则增加元素大小onPanResponderMove功能 这似乎是一种混乱的方法 有没有更顺畅的方法呢 如果您只需要简单的捏缩放功能 只需
  • 如何更改 UINavigationController 后退按钮名称?

    我有一个UIViewController我正在从第一个视图控制器导航到第二个视图控制器 我想更改显示在navigationcontroller为了回去 SecondViewController secondController Second
  • cocos2d框架可以在iPad上运行吗?

    Cocos2d iPhone 框架可以在 iPad 上运行吗 我的猜测是肯定的 但想检查一下在将带有 cocos2d 的 iPhone 项目移植到 iPad 或开始一个新项目后是否有人有明确的答案 Cocos2d v0 99 0 rc今天发
  • UITextView:内存使用量巨大

    我在 UITextView 中遇到了内存使用过多的问题 我正在将 50Kb ascii 文本文件加载到 NSString 中 并将其分配给应用程序中空 UITextView 组件的 text 属性 这立即使我的内存占用量增加了 100Mb
  • 如何将unix时间戳转换为iphone中的nsdate [重复]

    这个问题在这里已经有答案了 可能的重复 从 Unix 时间戳创建 NSDate https stackoverflow com questions 5827240 create nsdate from unix timestamp 我有一个
  • 将应用程序登录凭据发送给 AppStore 审核者

    我刚刚将我的应用程序上传到应用程序商店 该应用程序需要用户名 密码才能登录 但在上传过程中从未提示我输入任何凭据 有谁知道我如何向审阅者发送我的凭据 而不必等待他们审阅并请求凭据 您编辑应用程序元数据 标题 描述 关键字等 的页面最底部字段
  • iOS 使用 NSColor 与 UIColor?

    有什么区别UIColor and NSColor 什么时候会使用每一种 我碰到NSColor在试图弄清楚的同时UIColor用于 iOS 中的属性字符串 我理解使用UIColor对于 UIKit 等 但我不认为NSColor对于这种事情确实
  • 选择 UITableViewCell 时 UIView 背景颜色消失

    我在界面生成器中构建了一个简单的 tableViewCell 它包含一个包含图像的 UIView 现在 当我选择单元格时 会显示默认的蓝色选择背景 但 UIView 的背景颜色消失了 我的 UITableViewCell 的实现文件没有做任
  • iPhone 3GS 上的 ARM 与 Thumb 性能比较,非浮点代码

    我想知道是否有人有关于 iPhone 3GS 上 ARM 与 Thumb 代码性能的硬性数据 特别是对于非浮点 VFP 或 NEON 代码 我知道 Thumb 模式下的浮点性能问题 更大的 ARM 指令的额外代码大小是否会在某个时刻成为性能

随机推荐

  • 预测模式中的下一个数字

    我正在尝试使用 TensorFlow 编写一个简单的程序来预测序列中的下一个数字 我没有 TensorFlow 经验 因此我没有从头开始 而是从本指南开始 http monik in a noobs guide to implementin
  • commons-collections 和 commons-beanutils 中的重复类

    Apache 的两个 Maven 工件中有四个重复的类 commons beanutils commons beanutils 1 8 3 and commons collections commons collections 3 2 1
  • 如何检查文件夹是否存在?

    我正在研究 Java 7 IO 的新功能 实际上我正在尝试检索文件夹中的所有 XML 文件 但是 当文件夹不存在时 这会引发异常 如何使用新 IO 检查该文件夹是否存在 public UpdateHandler String release
  • Google pydrive 将文件上传到特定文件夹

    我正在尝试将文件上传到我的 Google 驱动器 下面的代码有效 如何指定上传到哪个文件夹 即驱动器 与我共享 csvFolder from pydrive auth import GoogleAuth from pydrive drive
  • 从 UWP 商店应用程序向多个收件人发送电子邮件

    我有一个简单的目标 即打开一封电子邮件 在 Outlook 2016 中 其中为 Windows 10 UWP 应用程序中的多个收件人配置了 收件人 字段 我尝试了3种方法 1 推荐的方式 如UWP示例中的demod 使用EmailMess
  • 如何在 React Native 博览会中使用可教学机器模型

    我正在使用可教学机器导出模型 const modelJson require assets models model json const modelWeights require assets models weights bin use
  • ReactJs componentDidMount 执行两次

    我正在研究 ReactJs 并遇到一些问题 我的问题是我有一个使用最新 ReactJs v 18 0 0 的简单应用程序 并且 componentDidMount 执行两次 为什么 index js import createRoot fr
  • 如何暂时放弃root权限?

    我正在开发一个以 root 身份运行的守护进程 但需要与用户调用 API 我检查了 API 代码 它使用getuid 来获取用户 如果 root 用户通过以下方式放弃权限setuid 无法恢复到root 如果调用 seteuid API 仍
  • Laravel - Jenssegers MongoDB 嵌套数组更新不起作用

    有人可以指出我的代码有什么问题吗 我正在尝试通过 Laravel Jenssegers 更新 MongoDB 中的嵌套数组 这是我的代码 update status Journal where id 5cd10b325586e9122761
  • 使用 mongoose 创建动态模式

    我对 Node js 和 Mongoose 模块非常陌生 我正在尝试创建一个架构 其中有一些必填字段 而其他一些字段可以是动态的 我用过strict to false 我的代码如下所示 var mongoose require mongoo
  • hibernate中缺少@Temporal注释

    如果我们使用怎么办 Column name birth date nullable false length 19 public Date getBirthDate return this birthDate 代替 Temporal Tem
  • 试图摆脱空数据字段(一种空基优化?)

    我想要一个会计 仪表层 如果需要的话 它应该计算对象实例上的许多不同的 事件 事件 可以是发生的任何事情 例如 在一天结束时 您应该能够判断 文件已写入 5400 次 或者 锁拥塞 52 456 次 不拥塞 12 311 次 通过旋转获取
  • 在Python中绘制图表

    我是 Python 新手 正在尝试根据找到的 pyODE 教程绘制图表here http pyode sourceforge net tutorials tutorial1 html 我在用着pylab用于绘图 下面是代码的主要部分 add
  • Chrome 扩展程序无需单击图标即可加载脚本

    大家好 我想加载脚本 无论用户是否单击我的扩展图标 这是我的扩展 它工作得很好 但我希望它能够工作 而不需要用户单击图标来加载脚本 这是代码 name Injecta version 0 0 1 manifest version 2 des
  • 如何在 shell 脚本中缩小 JSON?

    我一直在寻找一种在 bash 控制台中丑化一些 JSON 的方法 这有助于随后在另一个命令中使用它 例如 将 json 内联传递给httpie Giving foo lorem bar ipsum 我想获得 foo lorem bar ip
  • 为什么 scala 值 class#toString 包含案例类信息?

    价值类别 http docs scala lang org overviews core value classes html可用于实现类型安全 而无需拆箱的开销 我的印象是 在运行时 此类类型 类将 不存在 被视为简单类型 例如 值类ca
  • nodeJs巨大数组处理抛出RangeError:超出最大调用堆栈大小

    这是处理大量条目的代码的一部分 最初它与文件系统一起工作并对文件进行一些操作 有什么好的方法可以绕过限制并防止抛出RangeError 超出最大调用堆栈大小 目前它允许我迭代大约 3000 个项目 var async require asy
  • TensorFlow:dataset.train.next_batch 是如何定义的?

    我正在尝试学习 TensorFlow 并研究以下示例 https github com aymericdamien TensorFlow Examples blob master notebooks 3 NeuralNetworks aut
  • 在 .NET 中获取默认 Windows 系统颜色

    我正在编写一个自定义按钮控件作为 即将成为 免费控件套件的一部分 并且我希望将我的 默认 控件颜色基于相应的 Windows 系统颜色 因此 在网上查找 默认 Windows 系统颜色 后 我找不到有关 Windows 控件 尤其是按钮控件
  • 如何在 iOS 上旋转自定义启动屏幕?

    我的启动屏幕可以正常工作 但我的应用程序可以在横向模式下运行 并且启动屏幕以默认的纵向模式显示 如何启动应用程序 以便启动屏幕像我的应用程序一样在横向模式之间旋转 我正在使用以下代码 BOOL shouldAutorotateToInter