问题标签 [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 回答
70 浏览

ios - Detect if ViewController presented as FormSheet

I have two ViewControllers.

  1. Presenting
  2. Presented -> can be FullScreen or FormSheet (depending whether it is running on compact or regular horizontal size class)

How can Presented controller detect, whether it is presented as a modal or FormSheet?

0 投票
0 回答
78 浏览

ios - UIViewController 具有 Size 类的选择性自动旋转

如果您想要自定义行为,那么基于自动旋转的新尺寸类会很痛苦。这是我的要求和流程:

  • View Controller 1(VC1) 以模态方式呈现 View Controller 2 (VC2)
  • VC1 仅支持横向、纵向或两者,具体取决于用户设置(通过 实现supportedInterfaceOrientations)。对于这个例子,我们假设它被锁定为横向,

  • VC 2 支持横向和纵向

statusBarOrientation我使用 Size 类,并在 View Controller 1中检查viewWillTransition(调整大小...)以配置界面元素定位和其他自定义项。

这有效,除非出现 VC 2 并旋转设备。当 VC 2 被解雇时,VC 1 全部搞砸了。可以肯定的是,我想在 View Controller 1 出现时刷新它的布局。我怎么做?我尝试了 UIViewController.attemptRotationToDeviceOrientation() 但它不会强制再次调用自动旋转方法。

编辑:可以看出,在 VC1 中,我检查 statusBarOrientation 以确定界面方向。这带来了一个问题,因为当 VC2 旋转到纵向模式时,statusBarOrientation 会更改为纵向。在我强制布局为纵向模式的同时,在 VC1 上调用 viewWillTransition to size。

0 投票
0 回答
67 浏览

ios - 未找到 UIButton 属性字体的特征变化

当按钮的标题字体为普通时,会显示特征变化。请看下图:

在此处输入图像描述

但是当标题字体更改为属性时,加号图标会消失。请看下图:

在此处输入图像描述

谁能帮助我如何为UIButton属性标题添加特征变化?

请注意:对于UILabel. 请看下图:

在此处输入图像描述

我正在使用 Xcode 10.1。

0 投票
2 回答
656 浏览

swift - 当 trait 集合发生变化时,就会出现约束冲突,就好像 stackview 轴没有改变一样

我有一个带有两个控件的堆栈视图。

当 UI 不受垂直约束时: Vertical1

当 UI 被垂直约束时:Horizo​​ntal1

我得到了如图所示的两个 UI。第一次显示 UI 时没有约束冲突。但是,当我从垂直约束变为垂直 = 常规时,我会遇到约束冲突。

当我注释掉 stackview 空间时(参见下面的代码注释),我没有遇到约束冲突。

约束冲突在这里 -

当我将输出放在 www.wtfautolayout.com 中时,我得到以下信息: 更容易阅读输出

上图中显示的第二个约束让我认为在评估约束之前没有发生对 stackview 垂直轴的更改。

谁能告诉我我做错了什么或如何正确设置它(最好没有故事板)?

[编辑] 文本字段的后沿对齐以具有此:

更多的形式 - 肖像

更多形式 - 景观

0 投票
0 回答
452 浏览

ios - 没有在窗口上调用 traitCollectionDidChange

我有一种情况,我需要在窗口上注入全屏视图。无论出于何种原因,在“window.rootViewController.view”上插入全屏视图都不是一种选择。全屏视图动态响应纵向和横向布局的特征集合更改。

问题是当这个全屏视图被注入根窗口时,它似乎没有响应任何特征集合更改事件(当设备旋转时)。如果我在任何 UIViewController 的视图中注入相同的全屏视图,它工作正常 - 特征集合事件按预期触发。只有当我尝试在窗口上注入这些特征更改事件时才会触发。

我需要做些什么才能让特征集合更改在窗口级别上工作吗?或者是否知道这只适用于 UIViewControllers 及其视图?

0 投票
0 回答
385 浏览

ios - 在 iOS 13 中 - 我们如何实现两种以上的颜色模式/主题?

观看全新的 WWDC 视频在 iOS 上实现暗模式,我们发现它可以很容易地处理。我们可以使用新的动态系统颜色,它们将根据亮或暗模式具有特定的值。

现在,如何将这个新概念与实施两个以上主题的需求结合起来——以一种干净且面向未来的方式?

我过去曾研究并应用过不同的主题化方法,例如 UIAppearance 方法(例如Ray Wenderlich 的 UIAppearance 教程)或基于协议的自定义动态颜色方法。

以下代码是否适合从找出系统何时需要从亮模式切换到暗模式(反之亦然)开始?然后通过任何可能的“旧”方式更改应用程序范围的颜色?

0 投票
4 回答
15786 浏览

ios - 如何使用我的应用程序中使用的自定义颜色轻松支持明暗模式?

假设我的应用中有自定义颜色:

我在自定义控件(和其他地方)中使用它作为控件的背景:

在 iOS 13 中,我希望我的自定义控件同时支持明暗模式。

一种解决方案是覆盖traitCollectionDidChange并查看颜色是否已更改,然后根据需要更新我的背景。我还需要提供浅色和深色。

所以我更新了我的自定义颜色:

我更新了我的控制代码:

这似乎可行,但它很笨重,而且我碰巧使用的任何其他地方都myControlBackground需要添加相同的代码。

是否有更好的解决方案让我的自定义颜色和控件同时支持明暗模式?

0 投票
0 回答
161 浏览

ios - 用于 iPad 的 UIViewController modalPresentationStyle 弹出框和用于 iPhone 的自定义

我使用创建了一个自定义演示文稿,UIPresentationController但我只想将此演示文稿用于水平紧凑布局,并且我想用弹出框替换我的自定义演示文稿以进行水平常规布局,并且当水平特征集合在紧凑和常规之间更新时,我想要我的演示文稿样式在两者之间更新。

UIPresentationController课堂上adaptivePresentationStyle: UIModalPresentationStyle,据我所知,它被用作水平紧凑布局的演示风格。我可以返回custom,但我不确定如何使用我的另一个UIPresentationController和设置UIViewControllerTransitioningDelegate

0 投票
0 回答
607 浏览

ios - 如何集中了解 iOS 中 UI 样式(深色/浅色)何时发生变化?

在 iOS 13 原生引入之前,我有一个 iOS 应用程序,它有自己的主题系统(深色/浅色 UI 样式)。这部分是通过UIAppearance各种 UI 元素上的方法实现的,例如栏按钮项、分段控件等。

为了将我的主题与 iOS 的浅色和深色风格相结合,我想在系统在深色和浅色模式之间切换时自动切换我的主题。我主要可以通过traitCollectionDidChange在各种视图和视图控制器类上实现并在 UI 样式发生更改时调用我自己的主题更新方法来完成此操作。但我还需要触发 UIAppearance 设置的更新,并且我只想在每次系统 UI 样式更改时执行一次。

我的问题:我如何在一个地方集中了解 iOS 系统的亮/暗模式何时发生变化?我希望颜色外观相当于UIContentSizeCategoryDidChangeNotification. 这也意味着traitCollectionDidChange在各处实现的重复代码更少。

我可以在我的根视图控制器中触发它traitCollectionDidChange,但是一旦我实现了对 iPadOS 的多场景支持,我就不再真正拥有一个“根”视图控制器。

0 投票
1 回答
100 浏览

ios - 如何将默认 iOS 元素解析为特定特征?

如何将默认的 iOS 系统元素解析UISegmentedControl为特定的界面样式?

我知道颜色可以这样解决。

我如何为默认的 iOS 元素做同样的事情?