在 iPhone 中重新定位后,框架/窗口尺寸“不正确”

2024-01-11

在我的 iPhone OS 应用程序中,我想要(需要)观察设备方向的变化,以便重新排列屏幕的某些部分。我使用的方法是使用CGRect frame = [UIScreen mainScreen].applicationFrame获取屏幕尺寸,并从那里计算其他控件的尺寸和/或位置(我也尝试过self.view.frame).

到目前为止,所有测试都是在纵向模式下完成的,因此我可以专注于对主要功能进行编程,然后对横向模式进行一些调整。这里就出现了问题:-(void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation我添加了一些日志记录以在继续之前检查尺寸,但显然宽度和高度的值是“错误的”(我说“错误”是因为乍一看这些值对我来说没有意义)。

这是一些日志记录的输出:

  • 旋转:横向 [w=300.000000,h=480.000000]
  • 旋转:纵向 [w=320.000000,h=460.000000]

Landscape 中“w”和“h”的值对我来说似乎是相反的 - 我期望 w=480 和 h=300。

我究竟做错了什么?我用来调试的代码如下。

-(void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
    CGRect frame = [UIScreen mainScreen].applicationFrame;
    CGSize size = frame.size;

    NSLog(@"%@", [NSString stringWithFormat:@"Rotation: %s [w=%f, h=%f]",  
        UIInterfaceOrientationIsPortrait(self.interfaceOrientation) ? "Portrait" : "Landscape",
        size.width, size.height]);
}

您的设备的方向发生了变化,而不是屏幕的物理特性发生了变化。您基本上将其倾斜到一侧,但实际上它的宽度为 320 像素(由于状态栏正在显示,因此目前无法使用其中的 20 像素)和高度为 480 像素。如果您的视图是自动旋转的,则宽度/高度已为您转换,但是当您询问屏幕的实际尺寸时,您将得到屏幕的实际尺寸。

这也是为什么在使用翻译的视图时,基于视图的中心和视图的边界而不是视图的框架进行计算很重要。

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

在 iPhone 中重新定位后,框架/窗口尺寸“不正确” 的相关文章

  • WhatsApp 显示警告“此项目无法共享。请选择其他项目。”对于 iOS 应用程序。

    我正在开发一个 iOS 应用程序 在该应用程序中 我有社交共享功能 并且社交共享功能使用深度链接来共享 URL 该网址共享对于所有应用程序都运行良好 除了WhatsApp 它会显示一个警报弹出窗口 此项目无法共享 请选择其他项目 以下是我的
  • iPhone 和加密库

    我想我必须在我的 iPhone 应用程序中使用加密库 我想问你有关苹果公司实施的加密货币出口政策的影响 我需要做一些额外的事情吗 例如填写表格等 1 如果我使用 MD5 进行哈希处理 2 如果我使用对称加密 Thanks EDIT 2009
  • 在运行时获取 iPhone 应用程序的产品名称?

    如何才能实现这一目标 我想获取名称 以便可以在应用程序中显示它 当然 每次更改名称时不必在代码中更改它 Try this NSBundle bundle NSBundle mainBundle NSDictionary info bundl
  • 在午夜更新应用程序徽章,并提供以下选项:应用程序未启动或在后台,徽章数量可能会减少

    我正在阅读许多有关本地通知的内容以及它们如何帮助更新应用程序徽章编号 我想在午夜更新此徽章 并将其值设置为我在午夜之前无法知道的数字 因此 如果可能的话 我想在午夜启动一个功能来更新 加载一些数据 检查要显示的数字 并将其显示在徽章上 当然
  • Objective-C中如何使继承的类能够看到父类的隐藏方法[重复]

    这个问题在这里已经有答案了 我有两个类 Class1 和 Class2 第二个类继承自第一个类 我需要重写 Class1 的 update 方法来实现我的目标 继承方法中 update方法的改变是在代码中间进行的 所以我不能使用 超级更新
  • iPhone 允许光传感器作为输入吗?

    我只是想知道 iPhone 的开发是否允许使用光传感器 作为按钮或动作元素 我在网上找到了这个链接 可以使用光传感器作为按钮吗 存档 Touch Arcade 如果有人能阐明这个问题 我将不胜感激 Apple 代表的官方答复位于苹果开发者论
  • UIWebView 中的 PDF

    我正在创建一个杂志应用程序 我在 UIWebView 中显示杂志的每一页 不过 Web 视图不会用 PDF 填满屏幕 它周围有一个边界 我怎样才能全屏显示它 我还没有使用 UIWebView 尝试过此操作 但您也许可以执行类似的操作来以编程
  • 如何减少典型 iPhone 应用程序的启动时间?

    需要明确的是 这是一个普通的 iPhone 应用程序 而不是游戏 我在网上读过几次 一些开发人员提到他们正在努力改进 减少应用程序的启动时间 但从来没有提供任何关于如何做到这一点的良好背景信息 那么问题很简单 如何减少 iPhone 应用程
  • GMSMapView 中的倒多边形

    我必须在我的 iPhone 项目中使用 Google 地图 并且我正在使用 GMSPolygon 来绘制多边形 但是如何填充地图上除多边形内部之外的所有位置 就像下图一样 谢谢 我玩过你的问题 主要思想是用多边形填充整个地球 然后为您的特定
  • 有什么方法可以让我知道按屏幕的力度有多大

    我想找到触摸的压力 我只是不知道如何在不越狱并获取原始触摸数据的情况下实现该结果 有谁知道我会怎么做 你无法获得来自SDK的压力nor未记录的方法 然而你can使用未记录的方法检测触摸的大小 在 GSEvent UIEvent 的较低级别表
  • 如何在 iOS 中注册自定义文件类型

    我目前正在创建一个应用程序 我想让用户在其中备份他们的文件 plist m4a 我压缩文件并将扩展名更改为自定义扩展名 专门针对我的应用程序 例如 MyBackup 然后 用户可以通过电子邮件或 iTunes 文件共享进行导出 我已经阅读过
  • UIView 子类不会自动调整大小

    我一直在寻找有关调整大小的背景信息 但找不到太多 我知道我需要设置autoresizesSubviews在超级视图和autoresizingMask在子视图上 我已经这样做了 并且我的 UIImageViews 正确调整了大小 但我的自定义
  • 沿着预定路径移动图像?

    是否可以通过按下 iphone SDK 中的按钮来将图像设置为沿着预定路径运动 我不是在寻找任何奇特的东西 我正在研究一个简单的概念 但这会节省大量动画工作 是的 您可以通过创建一个路径来为任何 CALayer 制作动画CAKeyframe
  • 使用 Google place API 从 lat long 获取附近的地点

    我正在使用 google place API 即 https maps googleapis com maps api place search json location 33 7167 73 0667 radius 500 type f
  • Objective C 如何将文本字段添加到导航栏中

    我正在尝试将文本字段添加到导航栏中 但它没有显示在模拟器中 我在 viewdidload 中按如下方式执行 UITextView textField UITextView alloc initWithFrame CGRectMake 0 0
  • 混合静态和动态 UITableViewController 内容会导致 NSRangeException

    我一直在寻找这个错误 并找到了一些具有类似行为的帖子 但没有解决问题的解决方案 我有一个 UITableViewController 在 SB 中声明为静态 它具有以下部分 第 0 部分 配方 是静态的 有 4 个单元格 第 1 部分 口味
  • 重置转换后的 UIView 的原点会变得疯狂

    我使用 UIView transform 旋转 缩放 UIVIew 效果很好 然而 一旦我更改视图的框架原点 即使我没有执行任何进一步的 CGAffineTransforms 视图的内容也会开始 奇怪 地缩放 为什么会出现这种情况 我该如何
  • 在 mac 上使用 AVFoundation 和 AVCaptureVideoDataOutput 时如何使用自定义视频分辨率

    我需要处理捕获的视频帧的每一帧 尽管AVCaptureDevice formats提供了这么多不同尺寸的框架尺寸 看起来AVCaptureSession仅支持预设中定义的帧大小 我也尝试过设置AVCaptureDevice activeFo
  • CALayer 抗锯齿不如 UIView 抗锯齿

    我一直在尝试使用 CALayer 制作圆形绘图的动画 一切都运行良好 但问题是 绘制的圆不够抗锯齿 它的边界有点太粗糙 或者如果使用光栅化则模糊 抗锯齿已启用 还尝试过 边缘抗锯齿遮罩 kCALayerLeftEdge kCALayerRi
  • 如何使用 Objective-C 协议

    我需要将 Picker 选择的值继承到其他地方 我正在尝试下面的代码 但空值即将到来 请检查我哪里出错了 我必须继承在中传递的字符串值PickerView 请检查代码 选取器1 h import

随机推荐

  • 正则表达式中的捕获组[重复]

    这个问题在这里已经有答案了 我正在探索在正则表达式中捕获组 但我对缺乏相关文档感到困惑 例如 谁能告诉我两个正则表达式之间的区别 madhur and madhur 就我而言 第二个建议匹配madhur字符串中零次或一次 第一个与第二个有什
  • Python/Pandas 计算 Ichimoku 图表组件

    我有 Pandas DataFrame 对象 其中包含日期 开盘价 收盘价 每日最低股票数据和最高股票数据 我想计算的组成部分Ichimoku https www investopedia com terms i ichimoku clou
  • 如何在 Ubuntu 18.04 上安装或升级到 sqlite 3.33.0?

    我目前正在运行带有 SQLite3 的 Ubuntu 18 04 SQLite 3 的版本为 3 22 0 我需要将其升级到版本 3 33 0 以利用可用的新功能 如果我使用 apt get 删除并重新安装 SQLite3 它只会重新安装
  • 如何在 woocommerce 中获取产品的特色图片

    请告诉我哪里出错了 产品特色图片未显示 args array post type gt product posts per page gt 80 product cat gt profiler orderby gt rand loop ne
  • 如何在 Enterprise Architect 中自动生成 HTML 输出

    Enterprise Architect 有一种方法可以生成 HTML RTF 等格式的文档 您可以发布它 但您必须使用其 GUI 手动执行此操作 当您的 eap 文件位于 CVS Subversion 服务器中时 拥有一个每天检查最新版本
  • 将固定大小的 ImageView 在父 ConstraintLayout 中水平居中

    我有一个相当简单的布局 AConstraintLayout占满整个屏幕 一大片CardView在顶部有一个ImageView那是一半CardView和上面的一半 实际上不是一半 但你明白了 然而 有两个问题 ImageView粘在父级的左侧
  • dplyr 连接 A 列或 B 列

    如何使用 dplyrs 连接函数在 R 中通过 OR 语句连接 2 个表 例如 使用以下密钥将 df1 加入到 df2 上 df1 ColumnA df2 ColumnA 或 df1 ColumnA df2 ColumnB library
  • Boost::GIL 如何将图像以 JPEG 或 PNG 格式保存到 char* 中?

    所以我在保存到文件时看到了很多示例 但我想知道是否可以保存到 char 或字符串而不是文件中 也就是说将其保存在内存中 boost 本身似乎没有任何东西可以促进这一点 所有 I O 似乎都基于提供文件名 不过好像还有延伸here http
  • 在可编辑模式下使用单独的源目录安装包

    情况 这是示例包的结构 tree Foo Foo setup py src bar py init py 包的名称应为foo但是包的源文件放置在src folder 文件的内容是 设置 py from setuptools import s
  • 隐藏 ASP.NET MVC5 中某些角色的链接

    所以这听起来可能是一个愚蠢的问题 但如何仅为管理员用户显示链接 假设普通用户看到以下链接 主页 关于 联系我们 管理员用户会看到以下链接 主页 关于 联系 管理员 我尝试限制控制器并链接菜单上的控制器 但它仍然向所有人显示链接 只是不允许除
  • std::shared_mutex 和 std::shared_lock 是读者更喜欢还是作者更喜欢?

    在读写锁的实现中 我们可以利用std shared mutex with std shared lock and std lock guard or std unique lock Question gt 这个新专题是作者还是读者更喜欢 根
  • android中是否需要关闭参数/参数InputStream?

    所有流和 bufferedReader 都需要关闭我的问题是如果 流和 bufferedReader 位于方法参数 参数内 也需要关闭吗 正常代码示例 InputStream i entity getContent i close 问 如果
  • 如何将代码从 O(n^2) 优化为 nlog(n)

    给定一个数字数组 以产生最大值的方式排列它们 例如 如果给定数字为 54 546 548 60 则排列 6054854654 给出最大值 如果给定的数字是 1 34 3 98 9 76 45 4 则排列 998764543431 给出最大值
  • 从数据库执行代码

    我有一个 PHP 代码存储在数据库中 我需要在检索时执行它 但我的代码是HTML和PHP的混合体 主要用在echo 看起来像我的代码的示例 echo Some Text var something more text anotherVar
  • WPF 应用程序不再显示主窗口

    我的应用程序构建并运行良好 我在任务栏中看到一个图标 显示该窗口存在 但它从未显示 我从 app xaml 调用 StartupUri MainWindow Xaml 而 mainwindow 仅包含一些函数和 InitializeComp
  • 在 Xcode 10 中找不到 -lstdc++.6 的库

    我无法在 Xcode Beta 和 GM 版本中构建基于 Cordova 的 iOS 应用程序 因为在此项目中使用 lstdc 6 为什么因为苹果已经弃用了 lstdc 6这个库在较新的 Xcode 版本中 所以我已经从Link Binar
  • 在 Activity 之间传递 ArrayList

    我已经实现了一个 Parcelable 类 public class Evento implements Parcelable private int private String private String imagen more at
  • 有没有办法通过一次操作从 TFS 中的各个文件夹中检出多个文件

    有没有办法通过一次操作从 TFS 中的各个文件夹中检出多个文件 我已经修改了多个目录下的多个文件 但我希望它们只需单击一次即可签出 也可以单击一次签入 Thanks 是的 使用 TFS 命令行客户端 tf exe 如果您有可用的 tf ex
  • window.pageYOffset 始终为 0,并且溢出-x: 隐藏

    我正在创建一个网页 其中包含一些仅需要在特定时间滑入的屏幕外内容 为了实现这一目标 我正在设置overflow x hidden on html body 这样用户就无法向左或向右滚动来获取内容 但是 在应用程序中的某个时刻 我还需要用户向
  • 在 iPhone 中重新定位后,框架/窗口尺寸“不正确”

    在我的 iPhone OS 应用程序中 我想要 需要 观察设备方向的变化 以便重新排列屏幕的某些部分 我使用的方法是使用CGRect frame UIScreen mainScreen applicationFrame获取屏幕尺寸 并从那里