问题标签 [uitraitcollection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
473 浏览

ios - CKBrowseSwitcherViewController 覆盖 -traitcollection getter?

2020-11-17 15:56:01.464383-0800 库库[24499:8154415]

[TraitCollection] CKBrowserSwitcherViewController 类覆盖不支持的 -traitCollection getter。如果您尝试覆盖特征,则必须使用适当的 API。

在此处输入图像描述

所以最近我开始运行我在 Xcode12.2 升级之前构建的应用程序,这两个东西弹出。我已经通过一些研究解决了“CodeSign 失败,退出代码为非零”,但我想知道为什么这些“traitCollection 不支持”和“CodeSign 失败”的事情会出现?他们有关系吗?那是因为升级吗?

0 投票
0 回答
58 浏览

ios - Is there a situation when traitCollectionDidChange is the only function that can not be substituted by willTransition?

Apple says that traitCollectionDidChange(... called when the iOS interface environment changes and willTransition(to:with:) Notifies the container that its trait collection changed. ok. but is there a code i must call strictly in traitCollectionDidChange and not in willTransition and not in viewWillTransition? Why do we need separate traitCollectionDidChange( function? is there condition where we can not substitute traitCollectionDidChange with willTransition???

0 投票
1 回答
99 浏览

swift - 如何获取目标 UITraitCollection 以及目标 rect

我有一个工具窗格,在紧凑型 H 模式下,它将位于整个屏幕的底部,但在紧凑型 V 模式(或非紧凑型 H 模式)下,它将作为浮动窗格位于右侧。如何获得目标 UITraitCollection + 目标大小?他们似乎有两种不同的方法:

我需要这两个信息来正确设置动画!非常感谢!

0 投票
1 回答
35 浏览

ios - UITraitsCollection 是在 IB/Storyboard 中区分 iPad Landscape 与 Portrait AutoLayout 的路径吗

问: 我想在 iPad 上的纵向和横向之间有不同的布局。(我在 iPhone 上成功但 iPad 共享相似的尺寸等级)

我做了什么/尝试过:

通过 Google 和 SO 阅读和搜索,我还没有找到解决方案。我所学到的是关于覆盖UITraitsCollection,如果可能的话,我想强制 iPad 横向配置遵循我已经为 iPhone 横向模式设置的相同配置hCompact

我尝试了这个解决方案https://stackoverflow.com/a/60409218/14414215但不确定将它放在哪里以及何时放置在UIViewController运行时,应用程序甚至不会调用它。(这可能是因为我在 childViewController 中没有我的视图?)

此处的这篇文章还引用了UITraitsCollection https://stackoverflow.com/a/41374705/14414215但是缺少示例。

我相当确定这是许多应用程序正在做的事情,但我无法找到解决方案。

供参考:这也是我想在 iPad 上实现的。(iPhone 使用来自@DonMag 的这个解决方案效果很好)

StackView 布局并排并在彼此之上(如 zStack)

0 投票
2 回答
65 浏览

ios - Catalyst 中弹出框的水平尺寸等级?

如果我在 iPad 上将视图控制器显示为弹出框(通过将其设置modalPresentationStyle.popover),它会将其水平尺寸类报告为.compact. 但是,如果我在 Catalyst 应用程序中运行相同的代码,弹出窗口中的视图控制器会报告水平大小类为.regular. 紧凑是我所期望的。overrideTraitCollection在我展示视图控制器之前设置popoverPresentationController它可以使大小类在 iPad 上正常化,但不会使其在 Catalyst 上变得紧凑。

如何使弹出窗口中的视图控制器正确报告 Catalyst 中的紧凑水平尺寸类?

0 投票
1 回答
44 浏览

ios - super initWithFrame 从 -traitCollection 返回 nil,这是不允许的

我正在 XCode 12.0 上运行我的 Objective-C 项目之一。我有 UIControl 子类“SeatingPanelControl”,从中创建了另一个名为“IpadSeatingPlanControl”的子类,其中我在执行下面的代码时遇到了崩溃,但标题中提到了异常(也在屏幕截图中给出):

在此处输入图像描述

更新(解决方案):

我弄清楚了问题的原因。在修复 XCode 12 的 IMP 问题时,我错误地删除了一行代码。根据当前的代码设置,它在 iPhone 上运行良好,但不适用于 iPad。恢复代码行解决了这个问题。

在此处输入图像描述

0 投票
2 回答
1303 浏览

swift - Xcode 13 beta 5 错误:UIViewController 缺少初始化期间填充的初始特征集合

在 Xcode 13 beta 5 构建之前,应用程序运行良好。

在我们的视图控制器的这个初始化代码行中突然出现这个错误:

这段代码在 Xcode 12 中运行良好,并且没有任何更改,它现在中断:

'NSInternalInconsistencyException',原因:'UIViewController 缺少在初始化期间填充的初始特征集合。这是一个严重的错误,可能是由在调用 UIViewController 初始化程序之前访问视图控制器上的属性或方法引起的。视图控制器:<UITableViewController: 0x7f7fbd291bb0>'

我四处搜索,只发现了 1 个关于这个问题的晦涩话题,但这并没有太大帮助。

有时设置断点并介入可以让它在不崩溃的情况下工作,所以引擎盖下似乎存在某种布局竞争条件,但我正在努力调试。我试着睡一觉,但这不起作用。

任何和所有关于如何调试的建议都值得赞赏。现在我无法获得额外的信息来调试。如果您知道可能导致此问题的原因或在哪里查看,我将不胜感激您的意见。

这是错误堆栈跟踪:

0 投票
0 回答
57 浏览

ios - iOS DarkMode 在应用程序中覆盖

我们的应用程序设置中有一个选项可以选择暗模式,例如开/关/系统。如果用户选择开启-> 应用程序始终开启暗模式;如果用户选择关闭-> 应用程序始终处于光照模式;如果用户选择系统-> 应用程序将适应系统(设备)行为。我通过在应用程序委托中设置以下内容来实现这一点

应用程序在所有屏幕上都运行良好(表现如预期)仅在一个屏幕(实际上是屏幕的一部分)中采用系统(设备)首选项而不是应用程序首选项。例如:如果我在应用程序中选择浅色模式并且设备处于深色模式,则屏幕的特定部分将显示为深色模式。

附上截图。

在此处输入图像描述

我无法弄清楚问题是什么,没有我们在哪里覆盖特定屏幕的设置。

在上面的屏幕截图中,黑色的 2 个页面应该有白色背景和黑色文本。

0 投票
1 回答
52 浏览

uicollectionview - Swift 5 UICollectionViewCell 自动布局约束

很长一段时间后,我正在重新制作 Swift 和 UIKit。

工作流程:

  1. 我创建了一个 ViewController,UICollectionView它的中心在 X 和 Y 轴上以及与根视图成比例的宽度和高度都对齐。
  2. 分配给collectionview.delegate 和collectionView.dataSource 它相应的类实例对应UICollectionViewDataSource, UICollectionViewDelegateFlowLayout
  3. 我创建了一个 UICollectionViewCell 并在 cellforItemAt... 中调用 dequeuereusablecell...
  4. 我可以访问 sizeForItemAt... 来计算合适的大小
  5. 在 ViewController 中实现traitCollectionDidChange并在 collectionView 上强制 reloadData
  6. 我一直在使用许多设备(确切地说是模拟器)进行测试,它适用于大多数情况

设想:

  1. 如果水平和垂直大小类完全相同 - 示例:iPad Mini
  2. 项目计数为 1
  3. 页面首先以横向打开
  4. 然后页面被旋转成纵向

问题:

  1. 集合不会重新加载,因为 traitcollection 没有改变。
  2. Cell的当前宽度大于CollectionView的当前宽度

我尝试过的几种方法:

  1. 在 cellForItemAt... 方法中,在返回单元格之前,我使用 CollectionView 向单元格添加了一个约束,如下所示 - `Applicatin Crashed 并显示无法应用此类约束的消息。
  2. 类似于第一种方法,但尝试在 interfacebuilder 中应用约束。没有办法做到这一点,因为在 CollectionView 和 CollectionViewCell 之间单击并拖动命令根本不会提示任何约束

问题:

  1. 我应该实现诸如方向更改侦听器之类的东西并在那里重新加载collectionView而不是特征集合更改侦听器吗?
    • 如果我选择定向侦听器,将来如果我继续工作,多任务支持,如果我改变 traitCollection 而不改变方向,这种方法不起作用。
    • 如果我同时实现 traitCollection 和 Orientation Change Listeners,很多时候它们会发生冲突并尝试重新加载 collectionView 两次。
  2. 有人可以帮我找到适合这个问题的解决方案吗?
0 投票
1 回答
67 浏览

ios - 为什么在内容大小类别更改时不为表格视图单元调用 traitCollectionDidChange?

我有一个包含表格视图并显示自定义单元格的视图控制器。我正在尝试使用该traitCollectionDidChange方法(在单元格子类中)对内容大小类别的更改做出反应,但是当此特征发生更改时,永远不会为单元格调用此方法。另一方面,当尺寸类改变时它会被调用。

traitCollectionDidChange为视图控制器调用(当内容大小类别发生变化时),我可以手动将调用传播到可见单元格,但感觉像是额外的工作。为什么没有专门针对内容大小类别更改调用单元子类?

编辑推理我为什么要在单元格内调用:

当内容大小类别与可访问性相关联时,我想将单元格的标签更改为多行,否则保持单行。我在某些 iOS 应用程序中注意到了这种行为,例如 Apple Music。