问题标签 [view-hierarchy]

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 投票
0 回答
487 浏览

xcode - Xcode 9 调试视图层次结构非常慢

在 Xcode 9 之前,Debug View Hierarchy 在大约两秒内完全创建了 UI 的可视交互表示。现在,在 Xcode 9 中,大约需要 15 秒。

有什么设置可以让它像以前一样快吗?

0 投票
0 回答
176 浏览

ios - 呈现新的视图控制器 - 视图不在窗口层次结构中

我收到一条警告:“警告:尝试显示不在窗口层次结构中的视图!”

我认为我有一个与通过 segue 呈现新视图控制器相关的逻辑问题。我正在尝试对位置进行地理编码并将坐标分配给结构中的变量(以及几个其他变量),然后我将其发送到一个新的控制器,该控制器在 mapView 上显示一个图钉。

通过断点和打印语句,似乎我的 prepareForSegue 函数被调用了两次,一次是在地理位置实际发生之前,一次是在调用下一个视图控制器之后,一次是在地理位置完成之后......但我相信它无法显示地理编码的位置,因为视图控制器已经存在......我总是在海洋中间的某个地方结束。

我已经尝试移动我的异步函数(performUIUpdatesOnMain)并将我的地图和注释显示功能移动到第二个视图控制器中的 viewDidAppear 中,但是这些解决方案不起作用。我究竟做错了什么?

以下是每个视图控制器的相关部分:

第一个视图控制器:

第二个视图控制器:

我正在传递的名为 locationData 的结构包含四个变量:纬度、经度和两个字符串。

谢谢。

0 投票
2 回答
990 浏览

android - 视图位于父级的最后位置,但仍被阻止

我想做的事

在 aBottomSheetDialogFragment中,我想膨胀一个始终停留在屏幕底部的视图,无论它处于什么状态(折叠/展开)BottomSheetBehavior

我做了什么

在 的子类中BottomSheetDialogFragment,我从 XML 扩展视图并将其添加为CoordinatorLayout(它是BottomSheetDialogFragment的父级的父级)的子级:

代码运行没有错误。
而当我使用 Layout Inspector 查看 View 层次结构时,视图结构也是正确的:

布局检查器截图

您也可以在此处下载布局检查器结果,并使用您自己的 Android Studio 打开它。

问题

但是,即使它作为 的最后一个孩子插入CoordinatorLayout,它仍然被BottomSheetDialogFragment.
当我慢慢向下滚动BottomSheetDialogFragemnt(从折叠状态到隐藏状态)时,我终于可以看到我想要在片段后面充气的视图。

查看已屏蔽

为什么会这样?

答案

正如@GoodDev 正确指出的那样,这是因为根视图(design_bottom_sheet)已被设置为 Z 平移BottomSheetDialog
这提供了一个重要信息 -不仅视图层次结构中的序列将决定其可见性,而且还决定其 Z 平移。

最好的方法是获取 Z 值design_bottom_sheet并将其设置为底部栏布局。

0 投票
1 回答
75 浏览

ios - 在 Superview 中更改子视图的框架

我有一个 ViewController,它添加一个UIView,SpeciesImageView作为子视图viewDidLoad并在viewWillLayoutSubviews.

SpeciesImageView没有 nib 文件。当我们在 viewDidLoad 中创建时,它会在类中speciesImageView调用。initWithFrameSpeciesImageView

这工作正常(横向和纵向),直到手机旋转。我尝试将约束设置为speciesImageView.frame.size.width,但这不起作用,因为initWithFrame在方向更改时不会调用,因此高度/宽度speciesImageView保持不变。

另一方面, usingscreenRect不会改变 的实际大小UIView,它会改变它在超级视图中的大小。所以换句话说,我还没有找到改变实际speciesImageView方向变化大小的方法。

而且由于我丢失的原因,当您将其旋转回原始位置时,它会完全混乱。

进入 旋转一次 再转回来

0 投票
1 回答
130 浏览

uinavigationcontroller - NavigationController 和 View Hierarchy 问题

我有 1 个(rootViewController)视图控制器,它嵌入在导航控制器中。然后我推了另一个视图控制器(secondViewController),它在标题视图中有搜索控制器。当我尝试搜索成为第一响应者(活动)时,我在终端中得到了这个:

警告:尝试在其视图不在窗口层次结构中显示“AppName.CustomSearchViewController: 0x7face0c20eb0>!

这只发生在低于 11 的 iOS 中。当我将第二个视图控制器嵌入导航控制器并以模态方式呈现时,一切都很好,但我需要完全推送。我该如何解决这个问题?

0 投票
3 回答
85 浏览

angular - 带有扩展模板的组件子选择器

我想在 Router 和 RouterModule 之外创建具有视图层次结构的组件

例子:

比较父.ts

comp-children.ts

组件-foo-bar.ts

ComponentBar希望这comp-childrencomp-parent包含comp-children在内,但仅comp-children加载模板。

如何加载<router-outlet/>已解析为模板的父comp-children模板?

0 投票
0 回答
453 浏览

swift - 从 UIWindow 访问 UITransitionView

在我的应用程序中,我有一个 UINavigationController,身份验证后我运行执行 segue(推送替换)以导航到 UINavigationController,当应用程序进入后台时,我再次显示身份验证页面,我在一个名为 ScreenLocker 的分类中执行此操作

但是在n时间的应用程序进入后台后,我有nUINavigationControllers 和一个身份验证控制器(当我看到调试视图层次结构时我找到了它),知道显示 UINavigationController 如何删除身份验证视图控制器?

在此处输入图像描述

在此处输入图像描述

我当前的视图控制器是突出显示的视图控制器,它位于所有视图的前面,我想删除它并显示另一个视图。

在此处输入图像描述

0 投票
2 回答
1002 浏览

animation - SwiftUI - 如何更改视图的层次位置?

这是一个不起作用的基本示例:

SwiftUI 无法弄清楚我认为第一个Color.green和第二个Color.green视图是同一个视图,所以当然动画只是将其中一个淡出,同时在新位置淡入另一个。我正在寻找向 SwiftUI 指示这些是相同视图并将其动画化到新位置的方法。我非常兴奋地发现了这个.id()修饰符,因为我相信它会给我想要的效果:

不幸的是,这也不起作用。我对 SwiftUI 感到难以置信的兴奋,但在我看来,在保持视图标识的同时更改视图层次结构的能力非常重要。促使我考虑这一点的实际用例是,我有一些视图,我正在尝试为其创建粉丝动画。最简单的方法是让项目处于ZStack一种状态,使它们都在彼此之上,然后让它们处于VStack扇出状态,这样它们就可以垂直展开并且全部可见。从 a 更改为ZStackaVStack当然算作结构的更改,因此状态之间的所有连续性都丢失了,一切都只是交叉淡入淡出。有谁知道该怎么做?

0 投票
0 回答
6899 浏览

list - SwiftUI UITableView 被告知在视图层次结构中布局其可见单元格和其他内容

我在视图中有一个列表(我们称之为视图 A),我通过 NavigationLink 从视图 A 推送视图 B,并将 CurrentSubjectValue 操作到初始视图 A。添加数据的那一刻,didChangd.send(value) 是派往查看 AI 收到警告,提示更新不属于视图的单元格。根据我之前的 UINavigationController 行为,视图 A 似乎已从不直观的窗口中删除。任何想法?

视图 A(主视图)

然后显示配置文件视图

然后我们可以添加一个新的配置文件

然后有提供者

请记住,多个视图共享相同的提供者主题。所以在添加新配置文件时会出现问题。

还有两个问题,一个是返回 mainView 时按钮不再起作用。此外,当模态呈现时,我还不知道如何手动返回。

0 投票
1 回答
60 浏览

ios - 警告:尝试在其视图不在窗口层次结构中的 ViewController 上呈现 ViewController(带有 UIAlertController)

我正在构建一个聊天应用程序,其中有两种类型的视图以模态方式呈现在聊天屏幕上:一个 UIAlertController 供用户选择要发送的媒体,以及一个弹出框,如果当前用户想要阻止/删除他们的用户重新发送消息。UIAlertController 运行良好,但阻止弹出窗口失败并显示以下警告:

“警告:尝试呈现不在窗口层次结构中的视图!”

这是演示流程:“收件箱”视图控制器呈现“聊天”视图控制器。这个“聊天”视图控制器是呈现模态 UIAlertController 和“块”视图控制器(也是模态,在当前上下文中)的控制器。这是我处理这两种模式视图的代码:

UIAlertController:

块视图控制器:

我知道之前在 iOS (Swift) 上已针对此问题提出过类似的问题,但它们解释了与使用根视图控制器相关的解决方案。我不想使用根视图控制器。由于 UIAlertViewController 位于此屏幕上并且假定在视图层次结构中具有优先级,因此出现此问题。如何将拒绝用户VC 添加到层次结构或使其具有更高的优先级?先感谢您!

截屏