通过 UIToolBar 的 UIBarButtonItem 在 iOS13 上不显示

2023-12-31

我通过UIToolBar将UIBarButtonItem设置为iOS13上navigationItem的titleView。

构建并运行后,UIBarButtonItem 未按预期显示。

// note
UIBarButtonItem *noteButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemCompose target:self action:@selector(noteViewAction)];

// camera
UIBarButtonItem *cameraButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemCamera target:self action:@selector(cameraViewAction)];

// spacer
UIBarButtonItem *space = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
space.width = 50.0;


// Toolbar
UIToolbar *toolbar;
toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 300.0f, 44.0f)];
toolbar.autoresizingMask = UIViewAutoresizingFlexibleHeight;
toolbar.items = [NSArray arrayWithObjects:space, noteButton, space, cameraButton, nil];
toolbar.backgroundColor = [UIColor clearColor];

[self.navigationItem setTitleView:toolbar];

这段代码中,UIBarButtonItem在iOS12.4.1及更早版本中正确显示。

Xcode 控制台日志中显示以下消息。

2019-08-29 19:22:39.208598+0900 UINavigationItemBugOnIos13[559:49829] [LayoutConstraints] Unable to simultaneously satisfy constraints.
    Probably at least one of the constraints in the following list is one you don't want. 
    Try this: 
        (1) look at each constraint and try to figure out which you don't expect; 
        (2) find the code that added the unwanted constraint or constraints and fix it. 
    (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) 
(
    "<NSAutoresizingMaskLayoutConstraint:0x2839cf980 h=--& v=--& _UIToolbarContentView:0x102c14c20.width == 0   (active)>",
    "<NSLayoutConstraint:0x2839cff20 UIImageView:0x102d2aff0.width <= _UIModernBarButton:0x102d29c40.width   (active)>",
    "<NSLayoutConstraint:0x2839c00f0 UIImageView:0x102d2ca80.width <= _UIModernBarButton:0x102d2b550.width   (active)>",
    "<NSLayoutConstraint:0x2839c9720 H:|-(0)-[_UIButtonBarStackView:0x102c18130]   (active, names: '|':_UIToolbarContentView:0x102c14c20 )>",
    "<NSLayoutConstraint:0x2839c9770 _UIButtonBarStackView:0x102c18130.trailing == _UIToolbarContentView:0x102c14c20.trailing   (active)>",
    "<NSLayoutConstraint:0x2839cd9f0 'IB_Leading_Leading' H:|-(16)-[_UIModernBarButton:0x102d29c40]   (active, names: '|':_UIButtonBarButton:0x102d29a60 )>",
    "<NSLayoutConstraint:0x2839ce490 'IB_Leading_Leading' H:|-(>=10)-[_UIModernBarButton:0x102d2b550]   (active, names: '|':_UIButtonBarButton:0x102d2b370 )>",
    "<NSLayoutConstraint:0x2839cda40 'IB_Trailing_Trailing' H:[_UIModernBarButton:0x102d29c40]-(>=11.5)-|   (active, names: '|':_UIButtonBarButton:0x102d29a60 )>",
    "<NSLayoutConstraint:0x2839ce4e0 'IB_Trailing_Trailing' H:[_UIModernBarButton:0x102d2b550]-(16)-|   (active, names: '|':_UIButtonBarButton:0x102d2b370 )>",
    "<NSLayoutConstraint:0x2839c4140 'UISV-canvas-connection' UILayoutGuide:0x2823ecfc0'UIViewLayoutMarginsGuide'.leading == UIView:0x102c3eb90.leading   (active)>",
    "<NSLayoutConstraint:0x2839c42d0 'UISV-canvas-connection' UILayoutGuide:0x2823ecfc0'UIViewLayoutMarginsGuide'.trailing == UIView:0x102c3ee70.trailing   (active)>",
    "<NSLayoutConstraint:0x2839c4320 'UISV-spacing' H:[UIView:0x102c3eb90]-(0)-[_UIButtonBarButton:0x102d29a60]   (active)>",
    "<NSLayoutConstraint:0x2839c4370 'UISV-spacing' H:[_UIButtonBarButton:0x102d29a60]-(0)-[UIView:0x102c3ed00]   (active)>",
    "<NSLayoutConstraint:0x2839c43c0 'UISV-spacing' H:[UIView:0x102c3ed00]-(0)-[_UIButtonBarButton:0x102d2b370]   (active)>",
    "<NSLayoutConstraint:0x2839cf070 'UISV-spacing' H:[_UIButtonBarButton:0x102d2b370]-(0)-[UIView:0x102c3ee70]   (active)>",
    "<NSLayoutConstraint:0x2839c9590 'UIView-leftMargin-guide-constraint' H:|-(0)-[UILayoutGuide:0x2823ecfc0'UIViewLayoutMarginsGuide'](LTR)   (active, names: '|':_UIButtonBarStackView:0x102c18130 )>",
    "<NSLayoutConstraint:0x2839c9630 'UIView-rightMargin-guide-constraint' H:[UILayoutGuide:0x2823ecfc0'UIViewLayoutMarginsGuide']-(0)-|(LTR)   (active, names: '|':_UIButtonBarStackView:0x102c18130 )>"
)

Will attempt to recover by breaking constraint 
NSLayoutConstraint:0x2839c00f0 UIImageView:0x102d2ca80.width <= _UIModernBarButton:0x102d2b550.width   (active)>

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful.

苹果开发者论坛上有一个问题描述了同样的现象。

https://forums.developer.apple.com/thread/121474 https://forums.developer.apple.com/thread/121474

据此,这是一个限制问题,但它是关于私有API的部分,并且写道不可能进行进一步的调查和解决。

本文指出您使用了 UIStackView 而没有使用 UIToolBar。

我已经就这个问题向苹果报告了一个bug,但目前苹果还没有回应,而且这个问题在iOS13新测试版(iOS13.1 beta)中也没有得到解决。

在iOS13中,通过UIToolBar的UIBarButtonItem变得不可用了吗?

我应该使用 UIStackView 而不是 Apple 开发者论坛文章中描述的 UIToolBar 吗?


从 iOS 13 开始,您需要给工具栏一个框架。知道问题是objective-c,但回复很快。

   doneToolbar.frame = CGRect(x: 0,
                              y: 0,
                              width: view.bounds.width,
                              height: 40)

另一个解决方案是将工具栏放在stackview

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

通过 UIToolBar 的 UIBarButtonItem 在 iOS13 上不显示 的相关文章

  • Xcode 在代码签名身份中看不到我的开发人员证书

    我续订了 IOS 开发人员证书 从钥匙串中删除了旧证书 然后单击了我的证书 钥匙串中的一切看起来都很正常 我有分发 开发人员 WWDC 证书 每个配置文件看起来都有效 并带有绿色标记 在组织器中的团队和配置文件部分下 但在代码签名身份下的
  • 使用 nib 作为带有 nib 类的表节标题

    我想创建一个加载 nib 文件并将其设置为标题 UIView 的节标题 这个 nib 文件还将有一个关联的类 其中插座和操作连接到 因此我想像平常一样使用 nib 加载该类 我在网上搜索并找到了几个类似的答案 但我找不到任何适合我的答案 经
  • 进入后台时 Alamofire 请求卡住?

    我正在使用 Alamofire 调用 Web 服务 该服务需要相当长的时间才能加载 如果应用程序进入后台 当我返回应用程序时 我会被加载程序卡住 我想这是因为调用永远不会向我的完成处理程序返回任何内容 我该如何解决这个问题 您可以使用后台抓
  • 选择 UITableViewCell 时 UIView 背景颜色消失

    我在界面生成器中构建了一个简单的 tableViewCell 它包含一个包含图像的 UIView 现在 当我选择单元格时 会显示默认的蓝色选择背景 但 UIView 的背景颜色消失了 我的 UITableViewCell 的实现文件没有做任
  • 使用 UItableViewCell 类型的表达式初始化“CustomCellView *”的指针类型不兼容

    你能帮我理解和 修复下面的错误吗 我不明白CustomCellView是一个子类UItableViewCell 代码已编译 但警告仍然存在 Incompatible pointer type initializing CustomCellV
  • iOS WKWebView 处理文件下载

    我面临以下问题 在 Web 界面中 文件下载是通过锚标记触发的 如下所示 a href bla blabla a 虽然 Safari 浏览器可以处理此请求并打开一个对话框来处理文件 但 WKWebView 将此视为普通链接并且不对其执行任何
  • iOS uiwebview 在 WebThread 中崩溃

    我正在寻求一些建议或帮助诊断我所看到的这次崩溃 目前 我认为这可能是一个 webkit 错误 但一切皆有可能 因此请提供您可能有的任何见解 Incident Identifier AEB8EE37 E5D4 4975 97F4 2B2038
  • 如何在 iOS 中将 Firebase 对象持久保存到磁盘?

    看起来Firebase http www firebase comiOS 实现不支持客户端模型的离线缓存 这在实践中意味着 对于需要身份验证的 Firebase 应用程序 您需要首先进行身份验证并等待 Firebase 完成登录 检查用户身
  • 在回调函数中调用目标c函数

    如何在回调函数中调用目标c函数 回调函数 static OSStatus inputRenderCallback void inRefCon AudioUnitRenderActionFlags ioActionFlags const Au
  • 如何使用 SwiftUI 获取多个屏幕上的键盘高度并移动按钮

    以下代码获取键盘显示时的键盘高度 并将按钮移动键盘高度 在转换源 ContentView 和转换目标 SecibdContentView 处以相同的方式执行此移动 但按钮在转换目标处不移动 如何使按钮在多个屏幕上移动相同 import Sw
  • 如何区分 iTunes Connect / Apple TestFlight 上的 STAGE 和 PRODUCTION 版本?

    阶段构建与阶段服务器的对话 阶段服务器与生产服务器尽可能相同 以用于测试目的 生产构建与生产服务器的通信 生产服务器存储真实的关键数据 这些构建本质上是针对同一应用程序的 但是 iTunes Connect 界面将向您显示以下内容 即构建由
  • 如何组合两个 SwiftyJSON 对象

    我有一个 swiftyJSON 对象 例如 location http img http commentCount 0 timestamp 1432460217550 我希望能够向其附加另一个 swiftyJSON 对象 使其看起来像 lo
  • 使用自动布局、IB 和字体大小时表头视图高度错误

    我正在尝试为我的 uiTableView 创建一个标题视图 不是节标题 我已经有了 我已经在界面生成器中设置了一个 XIB 所有的连接都已连接好并且运行良好 除了桌子没有给它足够的空间 我的问题是表格顶部与表格标题有一点重叠 我的 XIB
  • 如何编辑应用程序包中的文件?

    在我的应用程序中 我从存储在捆绑资源中的 CSV 文件加载数据 但是 我希望能够在用户点击 更新 按钮时以编程方式更新此文件 有没有办法以编程方式更改应用程序包中的资源 这是我用来访问该文件的代码 NSString path NSBundl
  • 是否可以使用UIPageControl来控制UITableView的移动?

    从Apple示例 PageControl 中我们可以知道UIPageControl可以用来控制scrollview中页面的移动 由于 UITableView 是 UIScrollView 的子类 我想使用 UIPageControl 来控制
  • 带约束的嵌套集合视图的意外行为 (Swift 4)

    我的表格视图中有一个单元格 其中包含水平分页集合视图 该集合视图的每个页面内都有一个垂直集合视图 为了避免 滚动滚动 问题 我在垂直集合视图中禁用了垂直滚动 垂直集合视图的单元格计数不是静态的 可以是任意数字 因此 这会产生一个问题 集合视
  • 在情节提要中将 Segue 拖至自身

    我想将一个 Segue 从我的视图控制器拖到其自身 所以我可以推送该特定视图控制器的 无限 实例 我知道如何在代码中执行此操作 即以编程方式实例化视图控制器 但是 我想尽可能使用 segues 我发现了一些在故事板中进行自我延续的 技巧 但
  • 命令 /Applications/Xcode-beta.app/Contents/Developer/usr/bin/atool 失败,退出代码 255

    它发生在新的 Xcode7 beta 中 CompileAssetCatalog Users admin Library Developer Xcode DerivedData InstaAd ddgdnbxlpxipirebpndfmgr
  • cameraOverlayView 防止使用 allowedEditing 进行编辑

    在我的应用程序中 使用以下行在拍摄照片后对其进行编辑 移动和缩放 效果很好 imagePicker setAllowsEditing YES 但如果我还使用cameraOverlayView 则编辑模式将不再起作用 屏幕出现 但平移和捏合手
  • 动画 UICollectionView 单元格大小更改并重新定位周围单元格

    Goal 以动画方式改变单元格的高度并重新定位周围的单元格 设想 集合视图中的某些单元格会加载远程图像 最初 这些单元格的大小是静态的 并显示活动指示器 加载图像后 会将其添加到其单元格中 并且更改单元格的高度以适合照片 Notes 我正在

随机推荐

  • PHPIniDir 在 Windows 7 下损坏?

    我有一台在 Windows XP 机器上运行的服务器 使用 Apache2 PHP 和 MySQL 我最近升级到 Windows 7 但在运行时遇到了问题 Apache 工作正常 PHP 工作正常 但我似乎无法让它与php ini file
  • 如何在打字时启用历史选择列表

    我正在尝试成为 PowerShell 的一员 并发现了一项我非常喜欢的功能 但不知道如何使其始终如一地工作 PowerShell 可以进入一种模式 在您键入时显示增量更新的历史项目选择列表 然后 您可以通过向上和向下箭头浏览它们来选择要运行
  • Ruby 函数检查一个数字是否能被 5 整除并且是偶数

    def is even n remainder when divided by 2 n 2 if remainder when divided by 2 0 return true else return false end end def
  • 在 Flutter 中使用 iOS 行为时更改 ListView 反弹颜色

    当创建一个ListView 文档中的示例 https flutter io docs cookbook lists basic list 当使用带有 Flutter 的 iOS 模拟器滚动时 我们如何更改出现在列表顶部的反弹颜色 ListV
  • 如何使用 Cython 进行覆盖率分析

    我正在尝试使用一些 Cython 代码运行覆盖率分析pytest cov和工作服 io 我已经构建了启用跟踪的扩展模块 并借助以下链接运行分析 http docs cython org src tutorial profiling tuto
  • 如果远程仓库不可用,如何为 Spring Cloud Config 服务设置本地后备配置?

    我们计划在我们的服务中使用 Spring Cloud Config 我们最担心的是 当容器启动时 它依赖 github 始终可用 以便它可以拉取配置文件 如果 github 宕机 缓解该问题的最佳实践是什么 我正在考虑存储配置的本地文件夹作
  • 在单个 build.gradle 文件中多次调用同一任务

    我有一个自定义 Gradle 插件 它将从模板文件生成 Java 文件 我在不同位置有几个这样的模板文件 我需要 编译 所有这些文件以生成我需要的 Java 文件 获得文件后 我想将它们打包到 jar 中 我认为可以做到这一点的一种方法是从
  • 在 .NET 中打印 - 从毫米到像素的转换

    如何将用户输入从毫米转换为像素 以便将其打印在页面的正确位置 我使用以下代码 private void document PrintPage object sender PrintPageEventArgs e float dpiX e G
  • zip 函数帮助处理元组

    我希望有人能帮助我解决我遇到的问题 我有大量的元组 gt 500 如下所示 2 1 3 6 1 2 5 5 3 0 1 6 10 1 1 4 0 3 3 0 我的代码片段如下 sum1 A B C D creates a tuple of
  • get 返回 hazelcast 3.5 中超类 ArrayList 的值

    我在使用 hazelcast 3 5 时遇到序列化问题 当一个 hazelcast 客户端 Java 输入 class 的值时 public class MyType extends ArrayList
  • 使用 Firestore 和 Typescript 实现动态 Where 条件

    我正在尝试实现存储库模式火库Firebase 和打字稿 Code import firestore from firebase admin import ISearchCriteria from ISearchCriteria export
  • libgcrypt.lib 中未解析的外部符号

    如果我在 lib library 文件中发现未解析的外部符号 我必须做什么 如果我在 c 或 cpp 中发现无法解析的外部符号 我可以修复它 但是当我在 lib library 文件中发现未解析的外部符号时 我该如何解决这个问题 就我而言
  • @Input 是否提供双向绑定?

    我认为 Input的工作方式会直接给出一个大大的 不 对于这个问题 然而 今天我偶然发现了一些奇怪的行为 或者也许我一直对 Input 的想法是错误的 我做了一个堆栈闪电战 https stackblitz com edit angular
  • F# 是一种可用于 .net windows 开发的语言吗

    我一直听说过 F 微软现在有一个人在雷蒙德某处写博客和编码 你真的可以用 F 编写 GUI 代码吗 我很想看到一个例子 例如向表单添加按钮并订阅 onclick 事件 F 是否可以完全访问所有 Net 老实说 我很好奇 我知道我可以用谷歌搜
  • MySQL解释计划中“选择优化掉的表”的含义

    是什么意思Select tables optimized awayMySQL中的解释计划 explain select count comment count from wp posts id select type table type
  • 无法解析构造函数 ArrayAdapter

    无法在自定义对话框中使用 ArrayAdapter 这是我收到的错误 https i stack imgur com 3yGN5 png 您收到该错误是因为ArrayAdapter构造函数要求第一个参数是Context目的 由于您是从内部调
  • 未捕获的类型错误:Object.values 不是 JavaScript 函数

    我有一个简单的对象 如下所示 var countries Argentina 1 Canada 2 Egypt 1 我需要创建两个数组 第一个数组是对象中所有键的数组 我通过以下方式创建了这个数组 var labels Object key
  • matplotlib 中的复杂极坐标图

    我想创建一个类似于以下的极坐标图 我找不到如何在不同角度范围内添加两个不同函数的示例 我不需要中间的径向偏移 但可能会很好 任何指针 已知的例子都是超级的 它看起来就像其他绘图一样matplotlib 即如果你想绘制两条曲线 你可以调用pl
  • 使用 C# 将记录插入 MySQL 数据库

    我目前正在使用 C WPF 开发一个应用程序 我正在尝试将数据存储到 MySQL 数据库中 下面是我的代码 MySqlCommand cmd new MySqlCommand conn cmd CommandText INSERT INTO
  • 通过 UIToolBar 的 UIBarButtonItem 在 iOS13 上不显示

    我通过UIToolBar将UIBarButtonItem设置为iOS13上navigationItem的titleView 构建并运行后 UIBarButtonItem 未按预期显示 note UIBarButtonItem noteBut