UIWindow addSubview 上的偏移量

2024-03-09

我有一个基于 UITabBar 的应用程序,运行得很好。在某些情况下,我会显示不同的 UIViewController。现在让我烦恼的是我必须调整测试笔尖的框架(并且only测试笔尖!)才能正确显示。 (否则视图位于状态栏下方)。

- (void)applicationDidFinishLaunching:(UIApplication *)application
{
    if (condition) {

        UIViewController *vc = [[UIViewController alloc] initWithNibName:@"Test" bundle:nil];

        // FIXME this should NOT be required
        CGRect r = vc.view.frame;
        r.origin.y += 20;
        vc.view.frame = r;

        [window addSubview:vc.view];
        [window makeKeyAndVisible];
        return;
    }

    [window addSubview:tabViewController.view];
    [window makeKeyAndVisible];
}

那么测试笔尖可能有问题吗?不可能。测试笔尖在干净的新项目中按预期工作。新的干净笔尖也会出现同样的症状。那么 MainWindow 笔尖一定有问题,对吗?但 UITabBarController 显示得很好。

我在这里有点困惑并且没有想法。有什么建议如何追踪这个问题吗?


将根视图添加到 UIWindow 可能会很复杂,因为窗口总是位于状态栏下方。因此,根视图的框架必须重置为[[UIScreen mainScreen] applicationFrame]以防止它也与状态栏重叠。我们通常不必担心这一点,因为 UIViewController 会为我们修改框架......除非它不这样做。这是交易:

  • 如果您创建视图控制器 及其视图在同一个 NIB 中,而您 将视图嵌套在视图下方 控制器,它will自动调整视图的框架。
  • 如果您创建视图控制器并且 它在同一个 NIB 中的视图,但你 将视图连接到视图 控制器通过控制器的 查看插座而不是嵌套它,控制器will not自动调整视图的框架。
  • 如果您在一个 NIB 中创建视图控制器,并通过在 IB 中设置视图控制器的“NIB 名称”属性,将其连接到分离 NIB 中定义的视图,则will自动调整视图的框架,但是only if您还选中了“从 NIB 调整视图大小”。
  • 如果您通过调用 -initWithNibName:bundle: 创建视图控制器,则它will not自动调整视图的框架。
  • UITabBarController 希望将其视图添加为窗口的根视图,因此始终会自动调整其自己的视图框架以匹配应用程序框架。 (因此,如果您将 UITabBarController 的视图添加为窗口以外的任何内容的子视图,您会注意到奇怪的 20 像素间隙。)

我猜苹果认为 -initWithNibName:bundle: 通常不会用于创建窗口的根视图,因此它不会调整您的情况下的框架。像您所做的那样手动调整它的大小就可以了,实际上在查看 iPhone OS 控制器编程指南 http://developer.apple.com/iphone/library/featuredarticles/ViewControllerPGforiPhoneOS/BasicViewControllers/BasicViewControllers.html#//apple_ref/doc/uid/TP40007457-CH101-SW25,但你真的应该使用[[UIScreen mainScreen] applicationFrame]因为状态栏不是always20 像素高(例如,当您打电话时它会更高。)

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

UIWindow addSubview 上的偏移量 的相关文章

  • 如何为 Nslocal 通知设置自定义重复间隔......?

    我是 iphone 开发新手 我正在尝试在我的项目中使用 NslocalNotification 我需要每 2 小时或每两天或每两个月等给出提醒 目前我正在使用 NslocalNotification 重复间隔 但它仅适用于使用 Ncale
  • 使用 ZBarSDK 时 iPhone 相机失去自动对焦功能

    我正在开发一个应用程序 用户可以选择是否要扫描条形码或拍摄某物的照片 为了拍照 我正在使用UIImagePickerController照常 为了扫描条形码 我使用 ZbarSDK 1 2ZBarReaderViewController 拍
  • 从plist文件中读取数据

    我正在尝试为我的 iPhone 应用程序实现保存状态 我有一个名为 SaveData plist 的 plist 文件 我可以通过以下方式读取它 NSString pListPath2 bundle pathForResource Save
  • 我可以使用 jpeg 图像来启动 Screen

    我目前正在进行应用程序开发 并且添加了一个 JPEG 格式的启动器屏幕 该屏幕在模拟器和设备中都显示 但这是否会对苹果批准指南产生任何问题 iOS 8 更新 您现在可以使用基于 XIB 的启动资产 https developer apple
  • 从 NavigationController 中删除 ViewController 后 AVPlayer 继续播放

    因此 我在项目中使用 ARC 当我添加 AVPlayerLayer 时 它工作得很好 但当我从 UINavigationItem 中弹出 UIViewController 时 视频继续在后台播放 有谁知道你会如何处理这个问题 这似乎是一件很
  • 在 Xcode5 中使用 XCTest 时 AFNetworking 导致错误

    我正在使用 Xcode 5 现在刚刚开始对现有项目进行单元测试 为此我添加了CocoaTouch Unit Testing Bundle作为我的项目的目标 目标名称是 MyAppTests 我之前使用添加了 AFNetworking 库Co
  • 更改导航项(栏)的背景颜色

    有没有一种简单的方法可以更改视图顶部导航项的背景颜色 我有一个基于导航的应用程序 我只希望一个视图获得另一种背景颜色 我主要使用 IB 创建视图 我找到了以下解决方案 未测试 float r 10 float g 55 float b 13
  • 如何确定 NSTimeInterval 是否发生在任意 NSDate 期间?

    我有一个 NSTimeInterval 我想知道该时间戳是否位于日期的开始和结束之间 基本上我需要能够做类似的事情 NSDate today NSDate date NSTimeInterval myInterval someInterva
  • Facebook iPhone SDK:上传图像时显示进度条

    我想在我的 iPhone 应用程序将图像上传到 Facebook 时显示进度条 是否可以 我可以对我发出的每个 FBRequest 执行此操作吗 我还使用 FBRequest 来检查扩展权限 有时需要花费很多时间 谢谢 对于进度条 您可以做
  • 查找已用应用程序名称的捆绑包/开发人员

    我正在尝试将应用程序上传到应用程序商店并收到以下错误 很容易理解 The App Name you have entered has already been used 该应用程序不在 iTunes 上 有什么方法可以找出谁拥有该应用程序或
  • UIDocumentInteractionController 阻止“打开方式”表中的空投

    在我的应用程序中 我允许用户通过 Instagram 分享照片 这需要使用 UIDocumentInteractionController 如果手机支持 则会自动检测空投 如何将其从 打开方式 操作表中删除 即使我使用 UIActivity
  • 当 UITextField 已满或空时显示警报 Swift

    下面的代码中 如果 userNameTF 或 passwordTF 已满或为空 则会显示警报 IBAction func LoginBtn sender AnyObject let userName userNameTF text let
  • 使用 Interface Builder 创建 UIScrollView 的步骤

    我正在尝试使用 UIScrollView 但似乎有一些基本的事情我不理解 假设我想在我的 iPhone 应用程序中使用 UIScrollView 我有一个充满按钮的视图 尺寸为 320x700 显然 这对于 320x480 的 iPhone
  • 如何恢复消耗品应用内购买?

    我正在开发一款 iOS 游戏 用户可以通过应用内消耗品购买一定数量的内部货币 比如 1000 金币 如果用户想将余额从一台设备转移到另一台设备 如何恢复消耗品购买 在苹果的文档中 它说我们必须使用我们自己的服务器 但是如何获取用户的Appl
  • 进入前台后刷新数据

    更改默认设置后 我想在AppDelegate中进入前台时刷新myViewController的数据 我所做的是 AppDelegate m void applicationDidFinishLaunching UIApplication a
  • 来自 iPhone/iPad 的 json Web 服务

    有人可以帮助我解决如何从 iphone 或 ipad 使用 json Web 服务的问题吗 这里我的要求是使用 API 密钥实现 json webservice 如果可能的话发布一些教程或示例链接 谢谢 规范的 JSON 处理库是here
  • 填充 CoreData 创建的 sqlite 数据库

    我有一个由 CoreData 模型自动创建的 sqlite DB 但我的应用程序不会让用户能够将数据写入其中 而是我想用程序所需的所有数据预先填充它 我的问题是 CoreData 创建的 sqlite DB 具有未知的表和字段 这些表和字段
  • 在 UIImage 顶部绘制透明圆圈 - iPhone SDK

    我在尝试找出如何在 UIImageView 中的 UIImage 顶部绘制透明圆圈时遇到了很多麻烦 谷歌给了我线索 但我仍然找不到有效的例子 有没有人知道的例子可以证明这一点 最简单的方法就是创建一个半透明的方形 UIView 然后将其图层
  • 为什么 iPhone 上的纹理图像需要具有二维幂?

    我正在尝试解决 iPhone 上的闪烁问题 open gl es game 我有一些没有 2 维的图像 我将用具有适当尺寸的图像替换它们 但为什么尺寸需要是 2 的幂 大多数系统 甚至许多现代显卡 需要 2 的幂纹理的原因是 mipmap
  • 苹果推送通知在生产中不起作用

    我们完全陷入困境 请帮忙 我和我的团队制作了一个 iPhone 应用程序 这是我们第一次在 iOS 上尝试 一切都很好 直到我们提交应用程序并在应用程序商店上可用为止 推送通知服务无法正常工作 我在网上搜索并尝试根据人们的建议仔细检查我们的

随机推荐

  • Web Platform Installer 3.0 中的“IIS 7 推荐配置”是什么?

    今天刚安装了新的 IIS Express 看到 Web 平台安装程序也有安装 IIS 7 推荐配置 的选项 但我实际上无法弄清楚它的作用是什么 有人用吗 quote site http forums iis net t 1174703 as
  • Python类实例变量隔离[重复]

    这个问题在这里已经有答案了 我是一名自学成才的程序员 最近在学习Python 我遇到了一个奇怪的问题 但我想这只是我不了解 python 语法和 或程序流程的结果 我有一堂课叫Test这是文件中的TestClass py class Tes
  • 使用 AngularFire,是否可以创建关系型数据库?或者访问 UniqueID?

    I saw 这个帖子 https www firebase com blog 2013 04 12 denormalizing is normal html在 Firebase 的博客上解释了使用其平台创建关系数据对象的最佳方法 我正在努力
  • Chrome 扩展 - onRequest/sendRequest 与 onMessage/sendMessage [重复]

    这个问题在这里已经有答案了 退房这个示例扩展 http src chromium org viewvc chrome trunk src chrome common extensions docs examples api pageActi
  • 如何完全销毁引导模式窗口?

    我已经利用过模态窗口向导实现大约有 4 5 个步骤 我需要在之后彻底摧毁它最后一步 完成时 和OnCancel 步骤 无需刷新页面 我当然可以隐藏它 但是当我再次打开它时 隐藏模式窗口会恢复所有内容 有人能帮我解决这个问题吗 谢谢 任何提示
  • Tkinter 中的进度条,里面有一个标签

    是否可以改进 Tkinter Python 中的进度条 在中间添加标签 例如 读取文件 我试图找到一个优雅的编码解决方案 但没有真正的结果 from Tkinter import import ttk import tkFileDialog
  • Android 将 JSONArray 读入 JSONArray [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我如何读取包含 json 数组的 json 数组 这是我的 json product name myApp config grade
  • selenium 的 PageFactory 类及其与 FindBy Annotation 一起使用时的工作方式

    我有一个问题 当我使用 FindBy 注释时 Selenium webdriver 的 PageFactory initElements 方法如何工作 我有一段这样的代码 Class PageObject FindBy id usernam
  • 调整 UIAlertView 内 UIPickerView 的大小

    我想放一个UIPickerView in a UIAlertView但我似乎无法正确调整它的大小 这是我得到的 这是我的代码 let alertView UIAlertController title Select item from li
  • Javascript - 异步调用后同步

    我有一个 Javascript 对象 需要 2 次调用外部服务器来构建其内容并执行任何有意义的操作 该对象的构建使得实例化它的实例将自动进行这两个调用 这两个调用共享一个公共回调函数 该函数对返回的数据进行操作 然后调用另一个方法 问题是在
  • Angular Bootstrap 在 Angular 13 项目上给出错误

    我正在尝试安装角度引导程序 https ng bootstrap github io home在我的 Angular 13 项目中 如下所示 ng 添加 ng bootstrap ng bootstrap 但是当我在此语句上按 Y 时 我立
  • 如何在 Ektron 中选择属于某个分类的库项目

    我使用的是 Ektron CMS 版本 8 5 SP2 我有一些分类项目 有些是实际页面 有些是库项目 Word 文件和 PDF 等文档 假设我的分类中有 3 个页面和 2 个库项目 总共 5 个项目 我使用以下代码 ContentMana
  • CakePHP 2.0 $this->表单->input()

    这是我的add tcp 表名称 组 表字段 group id group desc PK group id 这是我的控制器 class GroupsController extends AppController public helper
  • 条形图的峰度、偏度? - Python

    在Python中确定条形图的倾斜 峰度的有效方法是什么 考虑到条形图没有分箱 与直方图不同 这个问题没有多大意义 但我想做的是确定图的高度与距离 而不是频率与箱 的对称性 换句话说 给定沿距离 x 测量的高度 y 值 即 y 6 18 10
  • 为什么 roxygen2 不会自动更新描述文件中的“导入”?

    我正在努力密切关注 hadley sbook http r pkgs had co nz 学习编写 R 包的最佳实践 我很高兴读到这些关于哲学 http r pkgs had co nz intro html本书内容 任何可以自动化的事情都
  • 如何在 ExpressionVisitor 中计算表达式?

    我需要在执行表达式之前使用 ExpressionVisitor 来分析它 根据我的需要 我需要评估除法表达式的正确部分 但我不知道该怎么做 这是我的示例代码 internal class RulesChecker ExpressionVis
  • 将 PostgreSQL text/bytea 列迁移到大对象?

    我有一个表 10k 行 用于存储大值text柱子 当前最大的未压缩大小为 417 MB 烘烤后为 85 MB 此设计的缺陷是无法传输这些值 例如通过 JDBC 使用此列的任何内容都必须将整个内容读入内存 是否有任何工具或快捷方式可用于将此列
  • 聚合查询中的 Mongodb java 展开操作抛出异常

    使用嵌入式 mongo 文档时 我尝试展开数组 但收到类似 org springframework data mapping model MappingInstantiationException Failed to instantiate
  • Qt Widgets 全屏边距

    我想创建一个程序 以全屏方式加载谷歌 所以我使用全屏方式打开了我的qt程序w showFullScreen 它工作得很好 但是当我添加QWebView并将其设置为centralWidget像这样 但是当我运行该程序时 我在窗口的两侧得到了一
  • UIWindow addSubview 上的偏移量

    我有一个基于 UITabBar 的应用程序 运行得很好 在某些情况下 我会显示不同的 UIViewController 现在让我烦恼的是我必须调整测试笔尖的框架 并且only测试笔尖 才能正确显示 否则视图位于状态栏下方 void appl