如何使用界面生成器重叠 iOS watch kit 中的两个控件

How to overlap two controls in iOS watch kit using interfacebuilder

我有两个带有图像的按钮,我想将一个按钮重叠在另一个按钮上。甚至可以做到iOS观看吗? 此外,如何在手表编程中处理 WKInterfaceObject 的背景或前景深度,如正常 iOS 编程中的 sendViewtoBackground 或 bringSubViewtoFront?

WatchOS4+

对于 @DrMickeyLauer 给出的 Watch OS4+

过时的答案

手表中没有 Z 层次结构。

您最多只能使用一个组,该组具有背景,然后可以控制该背景。

另一种选择(hack?)是将所有层次结构渲染到 UIImage 中并将其设置在手表中。

不,你不能,使用 iOS 正常编程。

你可以有两个黑客:

  • 创建一个组,并隐藏您不想看到的按钮。 Hide/Unhide你想换的时候的按钮。

  • 在同一个 WKButton 上进行管理:您更改按钮上的图像,并根据图像修改您的逻辑(这不是一个很好的 hack)。

自 watchOS4 以来这是可能的:您可以使用组来创建重叠 内容。在属性检查器中将组的布局属性设置为“重叠”。系统根据项目的对齐属性在组中定位每个项目。

更多信息@https://developer.apple.com/documentation/watchkit/wkinterfacegroup

我花了一段时间才弄明白;但是,我不仅可以重叠界面元素,还可以将 alpha 设置为不同的值。 Interface Builder 的附加图像显示了两件事:重叠对象和重叠对象的不同 alpha 设置。

注意Interface Controller背景中的waveform.path SF符号和上面的播放按钮的区别。仅使用 SF Symbols 无法以任何其他方式实现此效果。如果一个分组元素的 alpha 减少,则其他元素的 alpha 也会减少。为达到效果,我将重叠组的背景设置为纯黑色,然后将 alpha 设置为 0.75,让 waveform.path 符号的大约 0.25 显示出来。这样做可以让我在不影响其 alpha 设置的情况下重叠播放按钮。

下图显示了布局中每个元素的设置: