问题标签 [subviews]

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 回答
495 浏览

iphone - 启用与超出栏边界的 UINavigationBar 子视图的用户交互

我有自定义视图和按钮,已添加为 UINavigationBar 的子视图。它们的框架设置为从导航栏的中间开始并延伸到导航栏的正常边界之外。我还有另一个子视图,有时必须显示为模态视图,但在 iPhone 上。为了实现这一点,我将他的框架设置为 0,0,320,480 并将他添加为导航栏的子视图。一切看起来都不错,但是在导航栏下方显示的视图部分(即 0,44,320,456)上禁用了用户交互。

我的其他物品也出现了类似的情况。如何启用用户与这些视图的交互?有没有办法以相反的方式做到这一点,例如让视图从导航控制器的视图开始并向上延伸以覆盖导航栏?(即 0,-44,320,480)?

似乎是一个简单的任务,但我已经尝试了所有我能想到的,包括切换显示/隐藏导航栏有/没有动画以使其不碍事,但是有一个按钮我只需要显示作为的一部分导航栏,它需要位于实际的 uinavigationbar 之上。

任何帮助表示赞赏。

谢谢,~阿拉什

0 投票
2 回答
857 浏览

ios - iOS Subviews added programmatically are lost when view is reloaded from the storyboard

I have an app with two view controllers. ViewControllerA is a blank view with a tap gesture assigned which allows the user to tab on the view and create a UITextView at the point of the tap. The user can create as many UITextViews as they wish and they are added then programmatically to the view (ViewControllerA) as sub views.

There is also a button which allows the user to change the text font and styling. This triggers a Segue to the second view controller ViewControllerB which then allows the user to set Font, Text Size, Color etc. Once completed the user clicks the DONE button on ViewControllerB and another Segue switches back to the initial view (ViewControllerA).

This all works fine. Except when the user switches back to the initial view (ViewControllerA) from ViewControllerB the view is reloaded from the storyboard and the sub views I have added programmatically are gone.

In view (ViewControllerA) ViewDidLoad and ViewWillAppear are firing just fine so the problem seems to be the initial view is released when the first Segue fires and then recreated from the storyboard on the transition back but the subviews are of course not included as they are not in the storyboard since I added them programmatically.

Any suggestions for a best practice on how to solve this so that the subviews are recreated also when the main view (ViewControllerA) reloads?

Many thanks for any suggestions!

0 投票
3 回答
310 浏览

iphone - 为什么要删除子视图?

我意识到如果我从我的应用程序中相应地删除子视图,内存管理似乎更好(我的应用程序中有很多子视图)。

所以我的问题是必须删除您创建的所有子视图或其可选(当您的子视图非常少时,它不会对内存使用产生太大影响)?

0 投票
2 回答
486 浏览

xcode4 - 无法从子视图更新超级视图中的表

我使用的是 Xcode 4.3,虽然我已经做了很多年的程序员,但我在 Xcode 中有点像个小鬼。

我有一个名为 First 的 UIView,其中包含一个 UITable,它从内存中的文件中获取其内容。然后,我创建了一个名为 Second 的子视图 UIView,它在数据文件中进行了更改,这些更改应该会更改 First 中表的内容。当我删除 Second 并返回 First 时,这并不奇怪,表没有更新。下次从头开始加载 First 时,该表会反映所做的更改。

首先包含方法 viewDidLoad,该方法用于从文件中的数据中加载一个 NSArray,其中包含表所需的数据。我可以从 Second 调用 viewDidLoad,但除非从新更改的 NSArray 更新表,否则表将像更改之前一样显示。

所以我的问题是如何从 Second 调用表方法,以便在删除 Second 并返回 First 时更新 First 中的表。我曾尝试调用将数据加载到表中的表方法,但由于出现编译错误,因此没有成功。我需要知道如何调用 table 函数,当我返回到 first 时会导致 table 被更新。

至少我的部分问题是我不知道如何调用表更新,因为它没有像我预期的那样从 viewDidLoad 调用。

抱歉,这是对问题的冗长描述。我正在编写的程序的大部分其余部分都在工作,我已经处理这个问题好几个月了。我每隔几周就会回来一次,然后再试一次,但到目前为止还没有运气。我真的很感谢您提供的任何帮助,这将提高我的理解并解决问题。

这是修复后的代码:第一个(superview)相关代码

这是修复后的代码:第二个(子视图)相关代码。此代码位于进行更改应影响表格显示的方法中

0 投票
2 回答
346 浏览

objective-c - 为什么 iOS 无法使用 class_getProperty 函数获取类 UIView 的子视图属性?

我想获取有关subviews类属性的信息UIView

但是,它返回零?我觉得这太奇怪了。有人可以向我解释这种行为吗?

0 投票
4 回答
2597 浏览

iphone - 查找子视图在视图中的位置

目标:我们如何找到子视图在视图中的位置。我想找出我的滚动条在视图中的左上角 (x,y) 位置,我也在我的应用程序中使用导航栏它是否会影响从顶部定位子视图?

我知道如何找到子视图的高度和宽度

0 投票
4 回答
10143 浏览

objective-c - Change NSView subviews order

I'm working at a custom control that presents different handles. I want to be sure that the selected handle has a Z-index grater then the others handles.

Is there a way to swap view order? I found this function sortSubviewsUsingFunction:context: but i can't understand whether this is the right solution.

0 投票
2 回答
775 浏览

iphone - UIScrollView 的子视图之间的差距

我有 UIScrollView 的两个子视图。一个是textView,另一个是tableView。我根据其内容使 textview 的高度灵活,但我有一个问题。如果 textview 中的文本(也就是解析出来的数据)很小,那么 textview 和 tableview 之间就有很大的差距。或者如果文本太大,那么它会覆盖 tableview。无论文本视图的内容量如何,如何在 textview 和 tableview 之间保持相同的差距?这一切都在IB中完成。谢谢。

0 投票
1 回答
2925 浏览

ios - 多个 UIView 的重叠

我正在自定义UIView's中创建多个自定义UIView。自定义子视图的创建是好的。它们看起来像这样:

在此处输入图像描述

draw 方法非常简单:

将其添加到超级视图中也很简单:

所以我的问题是:

1)如何检测一个与另一个重叠的时间?

我看到了这个解决方案:

但是,如果我有多个UIViews,则for在 the 上执行super view并检查每个子视图对我来说似乎不是一个好的解决方案。

2)在这种情况下,可以做什么?

在此处输入图像描述

我的主要目标是检测何时发生这种情况:

在此处输入图像描述


更新 1.0

将尝试这里展示的内容,因为没有更优雅的方式。如果我能够实现它,我会将代码发布到 Github 上,如果有人需要的话。

0 投票
4 回答
16056 浏览

ios - 重新排序 UIView 子视图

在我的应用程序中,我尝试将子视图放在前面,然后稍后将其放回其原始图层位置。代码应该很简单:

将子视图置于前面(在我的自定义 UIView 类中):

简单的。我将原始 z 位置存储在一个名为的实例变量中,你猜对了,zPosition. 所以,前面的行-bringSubviewToFront:是:

所以,我用来把我的子视图放在前面的所有代码都是:

这可以正常工作。问题是当我尝试将子视图放回原处时。我只是这样做:

使用此代码,如果我有两个子视图,则会发生以下情况:

假设我有视图 A 和视图 B。视图 A 在视图 B 上方。我点击视图 B,它来到前面。我再次点击视图 B(它应该回到原来的位置),没有任何反应,所以它现在在视图 A 上。如果我现在点击视图 A,它会出现在前面,但是当我再次点击它时(所以它应该回到它原来的 z 位置:在视图 B)下面,它的所有兄弟视图都消失了!

有谁看到可能导致此问题的原因?