UIBarButtonItem 具有单独的纵向和横向图像 - 从 UINavigationController 弹出视图控制器时不调用 layoutSubviews

2024-03-19

我想在 UINavigationController 的 UIToolbar 中显示完全自定义的按钮,并支持纵向和横向。目前我已经实现了一个RotatingButton(UIView子类)类,其中包含一个填充整个RotatingButton框架的UIButton。 RotatingButton 还包含两个图像,分别用于纵向和横向,并且这些图像的高度不同。然后这个 RotatingButton 被包装到 UIBarButtonItem 作为自定义视图。

目前,在 RotatingButton 的layoutSubviews 中,我正在设置整个视图的边界,并将按钮设置为当前方向的适当图像。这效果很好,可以根据需要处理旋转。

- (void) createLayout {
    [self addButtonIfNeeded];
    UIDeviceOrientation currentOrientation = [[UIDevice currentDevice] orientation];
    if(UIInterfaceOrientationIsLandscape(currentOrientation)) {
        [self.button setImage:self.landscapeImage forState:UIControlStateNormal];
        self.button.frame = CGRectMake(0.0, 0.0, self.landscapeImage.size.width / 2, self.landscapeImage.size.height / 2);
        self.bounds = CGRectMake(0.0, 0.0, self.landscapeImage.size.width / 2, self.landscapeImage.size.height / 2);
    } else {
        [self.button setImage:self.portraitImage forState:UIControlStateNormal];
        self.button.frame = CGRectMake(0.0, 0.0, self.portraitImage.size.width / 2, self.portraitImage.size.height / 2);
        self.bounds = CGRectMake(0.0, 0.0, self.portraitImage.size.width / 2, self.portraitImage.size.height / 2);
    }
}

- (void) layoutSubviews {
    [super layoutSubviews];
    [self createLayout];
}

然而,这个问题仍然存在:

  1. 从纵向开始查看
  2. 将视图控制器推入堆栈
  3. 将设备旋转至横向(当前视图会做出适当反应)
  4. 弹出最后一个视图控制器:前一个视图反应良好,但 RotatingButtons 的layoutSubviews 不会被调用,并且按钮仍然比应有的大.

因此,目前在弹出视图控制器后,之前的 UIBarButtonItems 不会调用其layoutSubviews,并且它们仍然太大(或者太小,如果我们从横向开始并在另一个视图中旋转到纵向)。如何解决这个问题呢?


这是一个非常棘手的问题。你应该尝试覆盖viewWillAppear:打电话[self.view setNeedsLayout]每当视图即将出现时强制更新布局。

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

UIBarButtonItem 具有单独的纵向和横向图像 - 从 UINavigationController 弹出视图控制器时不调用 layoutSubviews 的相关文章

  • 在后台每 X 分钟执行一次函数不起作用

    我使用此代码每 X 分钟执行一次函数 void executeEveryOneMinute self myFunction dispatch after dispatch time DISPATCH TIME NOW int64 t 60
  • 将 Xcode 4.5 新 XIB 文件恢复到 iOS<6

    我已经安装了Xcode 4 5 with iOS6 SDK以及其他用于测试目的的旧 SDK 从 4 3 到 6 0 很美 但是有一个BIG问题 生成一个新的 XIB 文件以兼容 iOS6 这是一个问题 因为我的应用程序需要运行在旧设备 不只
  • 如何将 NSDate 转换为 NSString?

    我想将 NSDate 转换为 NSString 这怎么可能 我尝试了这个 但它不起作用 它正在生成异常 NSString dateToString NSString alloc initWithFormat NSString dateObj
  • 基于 JavaScript 的 iPhone UI 框架

    我们有一个基于推送的网络应用程序 最近 我们计划为其制作一个 iPhone 应用程序 就像 Facebook 拥有 iPhone 应用程序和网站一样 我们正在寻找一个可以让我们快速前进的 UI 框架 我翻阅过PhoneGap http ww
  • 如何将 CIFilter 输出到相机视图?

    我刚刚开始使用 Objective C 我正在尝试创建一个简单的应用程序 它显示带有模糊效果的相机视图 我得到了与 AVFoundation 框架一起使用的相机输出 现在 我正在尝试连接 Core 图像框架 但不知道如何连接 Apple 文
  • iPhone OS 3.0.1 会毁掉你的开发手机吗?

    我将手机更新到3 0 1 虽然手机作为手机工作正常 xcode http en wikipedia org wiki Xcode组织者不再知道手机的名称 它还说这个版本的 xcode 不支持 3 0 1 我下载了最新版本的xcode和操作系
  • Mobile Safari (iPhone) CSS 垂直居中/行高 CSS 问题

    有一个问题 我一直试图在各个项目中解决 但运气不佳 我有一些divs 内的文本以 CSS 为中心 使用display block and line height 我也尝试过padding和固定的高度 通常 这些设置要么只是标题 要么有时是按
  • [[NSMutableDictionary alloc] initWithObjects:...] 和 [NSMutableDictionary DictionaryWithObjects:...] 之间的区别?

    仍在学习 Objective C iPhone SDK 我想我知道为什么这不起作用 但我只是想确认一下 In awakeFromNib 如果我使用 NSMutableDictionary alloc initWithObjects 它实际上
  • 延迟图像下载完成后更新 UITableViewCell

    异步下载单元格图像后 我在更新 UITableViewCells 时遇到一些问题 我正在使用自定义 UITableViewCells 如下所示 UITableViewCell tableView UITableView tableView
  • iOS 7 导航栏颜色在 iPhone 4 上无法正确显示

    我的导航栏颜色在 iOS 7 中正常显示 部署iOS 6 0 但如果系统版本是iOS 7 0或更高版本 部分导航栏颜色在iPhone 4上无法正常显示 在iPhone 5上工作正常 我是这样做的 if SYSTEM VERSION GREA
  • 如何将字符串从 Applescript 传递到 Objective C

    我正在开发一个应用程序 我需要能够传递一个字符串变量 from 苹果脚本 to 目标C 我已经弄清楚如何从 Objective C 类中的方法运行 Applescript 但我需要能够将 NSString 设置为 Applescript 中
  • 如何在 SQLite 中替换字符串?

    如何更新具有以下内容的表列 var mobile 233KKFSDK3234 Documents Page jpg 并将其替换为 Documents Page jpg 在 SQLite 中 注意 所有文字 除了 Documents 是动态的
  • 检查系统时间是自动还是用户设置

    我需要在当前的项目中设置用户证明时间 我围绕这个问题发现了很多不同的问题 但似乎没有一个问题有我正在寻找的答案 这些是我到目前为止看过的问题 XCODE 如何从设备获取 验证准确的时间戳 https stackoverflow com qu
  • NSOperation 中委托的使用

    我正在尝试利用CLLocationManager in an NSOperation 作为其中的一部分 我需要能够startUpdatingLocation然后等到收到 CLLocation 后才完成操作 目前我已经完成了以下操作 但是委托
  • CGContextSelectFont 等效项

    在 iOS 7 CGContext SelectFont 中已弃用 已弃用的消息说我必须使用 Core Text 但我不知道哪一个与这段代码完全相同 CGContextSelectFont context Helvetica kBarLab
  • 无需 iPhone 6 Plus 即可预览 iOS 应用程序

    我已经在 Yosemite 中使用 iPhone 6 和 Quicktime 完成了 iOS 应用程序预览 视频 但我无法在 iTunes Connect 中为 iPhone 6 上传它 而且我没有 iPhone 6 设备 有没有办法在没有
  • 如何修复 ReactiveCocoa(带有 CocoaPods)的安装?

    这里是新手 尝试将 ReactiveCocoa 2 2 4 和 CocoaPods 安装到项目中 但在运行时遇到错误 我用过github 上的这个 podspec https github com CocoaPods Specs blob
  • iTunes connect 中不同应用程序的多个银行帐户[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 由于我们正在为客户开发 iPhone 应用程序 并且他希望对该应用程序收费 因此我们想知道是否可以在 iTunes 中连接多个银行帐户 以便将收入直接
  • 将应用程序登录凭据发送给 AppStore 审核者

    我刚刚将我的应用程序上传到应用程序商店 该应用程序需要用户名 密码才能登录 但在上传过程中从未提示我输入任何凭据 有谁知道我如何向审阅者发送我的凭据 而不必等待他们审阅并请求凭据 您编辑应用程序元数据 标题 描述 关键字等 的页面最底部字段
  • 如果加载 dylib,垃圾收集工作队列会崩溃

    我们正在将应用程序从 10 6 移植到 10 8 我正在查看我们在应用程序中加载的 dylib 我面临着非常不寻常的崩溃垃圾收集工作队列并附有以下消息 malloc Thread suspend unable to suspend a th

随机推荐

  • Subversion 更新问题

    当我尝试更新我的存储库时 出现以下错误 有人能解释一下这是什么意思吗 命令 更新错误 网址错误 http mysvn foo 错误 现有目录错误 C SVN MyProj NinjectModules Models 不匹配错误 预期 URL
  • 保留 SQL 中的文本格式

    我有一个文本区域 可将其内容插入到 SQL 表中 有没有办法保留文本的格式 然后在 HTML 中使用它 我假设您正在谈论保留换行符 Either 输出 标签内的文本 or 在插入数据库之前将换行符转换为 标记 例如 PHP 中的 nl2br
  • R 噩梦:Yosemite、R、RStudio 和 Homebrew

    我使用配备 OS X Yosemite 10 10 2 的 MacBook Pro 13 Retina 2013 年末 我不希望我最大的敌人遇到这种情况 也许吧 噩梦按时间顺序排列 从官方网站下载 R 和 RStudio 运行这两个应用程序
  • 将数组数据分解为spark中的行[重复]

    这个问题在这里已经有答案了 我有一个数据集 如下所示 FieldA FieldB ArrayField 1 A 1 2 3 2 B 3 5 我想爆炸数据数组字段所以输出将如下所示 FieldA FieldB ExplodedField 1
  • 提高 Python Tesseract OCR 的准确性

    我在用pytesseract https pypi org project pytesseract 随着openCV https pypi org project opencv python 在 Python 中的简单 django 应用程
  • 无法使用 Apache FOP 生成 PDF

    我正在尝试使用 Apache FOP 使用 XML 数据和 XSL 样式表创建 PDF 但我不断收到以下错误 org apache fop apps FOPException org apache fop fo ValidationExce
  • 显示寄存器内容

    您好 我需要帮助显示寄存器的内容 我的代码如下 我已经能够显示数据寄存器的值 但我想显示标志状态 例如 1 或 0 如果还显示其他寄存器 如 esi ebp 的内容 将会很有帮助 我的代码没有打印标志的状态 我缺少什么 section te
  • 清除回发时的查询字符串

    简单的问题 但我不知道该怎么做 我有一个带有 GridView 的页面 最初使用查询字符串填充 获取查询字符串值后 我不需要查询字符串 因为我使用 DropDownList 的值来填充 GridView 我怎样才能摆脱它 回发并不能清除它
  • 以编程方式将列表作为 Web 部件插入 WSS 3.0 中的 Web 部件页面中

    我尝试在网上搜索以编程方式将列表作为 Web 部件插入到 Web 部件页面中 但不够幸运 我有什么想法或想法以编程方式将列表作为 Web 部件插入到 Web 部件页面中 非常感谢 首先添加这些 using 语句 using Microsof
  • 使用插件 dsl 语法应用 hibernate-gradle-plugin?

    我想用org hibernate hibernate gradle plugin在我的项目中使用插件 dsl 风格 这是我的build gradle kts插件部分 plugins kotlin jvm version 1 3 31 id
  • 如何解析 .msstyles 文件?

    我需要从 msstyles 文件 Windows XP 视觉样式文件 中提取一些位图 但我不知道从哪里开始 我似乎找不到任何有关如何执行此操作的文档 并且文件格式似乎是二进制的并且不容易解析 我已经能够使用以下方法自行提取位图 IntPtr
  • 在 javascript 中更改 RGB 颜色的色调

    如同this https stackoverflow com questions 6443990 javascript calculate brighter colour 如何增加亮度 我想更改 RGB 十六进制 颜色的色调 Say cha
  • 获取 woocommerce 类别及其子类别

    我想在前端获取所有 woocommerce 类别 其子类别如下结果 ul li a href Link a ul li a href Submenu link a li ul li ul 这是我所拥有的 但这不是我想要的
  • 如何在 Django 1.7 中重置迁移

    我知道有一个与此相同的标题 但问题不同 我设法使我的开发机器迁移和生产迁移不同步 我有一个使用 South 的 Django 应用程序 我有自己的工作流程 运行良好 这可能不是正确的做事方式 但我没有遇到任何问题 基本上我有一个脚本将生产数
  • 使用 Graph API 和 Android SDK 将图片上传到 Facebook

    我正在尝试使用 graph api 将照片上传到 facebook 但不断出现 OutOfMemory 异常 上传的代码是这样的 private void PostPhoto SessionHandler facebook Uri phot
  • Pyspark:如何过滤两列值对的列表?

    所以我有一个 PySpark Dataframe 我想用一个 长 有效列表来过滤它pairs两列 假设我们的数据框的名称是df和列col1 and col2 col1 col2 1 A 2 B 3 1 null 2 A null 2 nul
  • 在 Android 中处理 XML 的最佳方法是什么

    与 PC 服务器相比 Android 设备速度慢得多 内存也低得多 那么在 Android 中处理 XML 的最佳方法是什么 我有一组非常复杂的 xml 需要解析 SAX 或 DOM 都会导致代码过多 有人有好的建议吗 我想让它干净又快速
  • 将 Java.logging 扩展为另一个日志级别?

    我想知道是否可以将标准 java 记录器 java util logging Logger 扩展为另一个记录器级别 目标是 日志文件中应该显示 错误 而不是 严重 那可能吗 或者我必须使用不同的记录器 例如 Log4j 多谢 如果您只想打印
  • 如何在运行时检测某些编译器选项(如断言)是否设置为 ON?

    Delphi 中检查断言是否有效的条件是什么 当断言在代码中不活动时 我希望能够做一些事情来抑制有关未使用变量的提示 例如 procedure Whatever var v Integer begin v DoSomething Asser
  • UIBarButtonItem 具有单独的纵向和横向图像 - 从 UINavigationController 弹出视图控制器时不调用 layoutSubviews

    我想在 UINavigationController 的 UIToolbar 中显示完全自定义的按钮 并支持纵向和横向 目前我已经实现了一个RotatingButton UIView子类 类 其中包含一个填充整个RotatingButton