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

ios - iOS UIView `convertRect:toView:` 无法按预期工作

我有一些旧的 iOS 代码,现在我正在迁移到 sdk7。我必须支持 iOS 5(所以没有自动布局)。代码动态(通过代码)创建 UI 的某些部分。

为了处理导航视图可能与导航栏重叠的可能性,我执行了以下代码:

localTop假设给了我适当的y位置,我可以开始添加独立于 iOS 版本的项目,并假设可以抵抗任何新的 Apple 发明。

但这不起作用。标记为的线1给出了适当的界限({0, 0}, {320, 44})。但是在执行行3左上角之后navBarRect{0, 20}self.view 与导航栏和状态栏重叠,所以这是预期的),但它的大小是{640, 88}预期的两倍。我也尝试了带有convertPoint:toView(line 2) 的版本,但这给了我相同的结果。

我已经检查了所有导航self.view的超级视图和公共视图,但我没有发现任何转换,那么这个框架怎么可能在一行之后改变大小3

或者也许有更好的解决方案(没有硬编码)?

0 投票
2 回答
301 浏览

ios - 滚动视图在触摸并按住然后滑动时不滚动

我有 UIScrollView 和里面的其他 UIView 元素。我的其他 UIView 元素大多是分段控件。如果我单击 UISegmentedControl 并按住一秒钟然后尝试滚动,则不会发生滚动。只有当我的手指触摸并立即滑动时,我才能滚动。我检查了其他 iOS 应用程序,例如邮件。行为是您触摸并按住邮件,然后它被突出显示,但是一旦手指移开,滚动就会发生并且突出显示被撤消。我该如何实现这种行为?

0 投票
3 回答
2244 浏览

ios - 检测一个 UIView 是否在父级中的另一个 UIView 后面

我有一个UIView有几个子视图的父母。

子视图是兄弟 - 子视图不是彼此的子视图。(每个人都在他们的超级视图中处于相同的层次结构)

例如:

我希望yetAnotherChildView能够检测到它在视图层次结构中被移回。如何才能做到这一点?

编辑

我知道containerView可以知道哪些子视图高于什么-但我不想(不能)containerView通知其子视图他们的订单已更改-想象在股票视图上添加子视图-股票视图不知道的子视图,并且他们希望收到这样的通知。

子视图CustomUIView需要观察它的一些变化superview

例如(这可能是一个非常糟糕的解决方案)

0 投票
3 回答
4305 浏览

ios - iOS:[self.view setNeedsDisplay];

我似乎忘记了这方面的基础知识,或者我只是太累了。

我有一个视图控制器和一个UIView名为 MyViewClass 的子类视图。

viewDidLoad我的 viewController 中,我alloc喜欢init self.myView这样:

有时在我的 viewController 中,我会调用[self.view setNeedsDisplay];. 这里没问题。

我在 MyViewClass.h 中公开了一个属性:

该属性idrawRect在 myView 中使用;所以,从我的 viewController 我会这样设置:

所以我的问题是:

为什么我可以[self.view setNeedsDisplay];在不需要调用的情况下调用我的视图控制器[self.myView setNeedsDisplay];并将drawRect在 myView 中调用,但我不能像self.view.i在我的视图控制器中self.myView已经分配的self.view那样viewDidLoad在我的视图控制器中进行操作?

0 投票
1 回答
314 浏览

ios - 在彼此顶部的相同视图之间交叉淡入淡出

我有两个相同的视图。一个是真实的,一个应该充当假人。

我想在它们之间淡入淡出(默默地)。我在同一个动画块中同时将一个视图的 alpha 设置为 0,将第二个视图的 alpha 设置为 1。

但是结果并不顺利,我可以看到一个视图正在淡出,而第二个视图正在淡入。我希望这个动画是无声的(即根本没有任何动画)。

PS我不能在没有任何动画的情况下设置那些alpha,因为真实视图是必须淡出的集合视图的一部分,而第二个视图(虚拟)假设在集合视图消失后替换集合视图的单元格之一。

有什么方法可以做到这一点,为什么 iOS 会以这种方式呈现它?

谢谢!

0 投票
1 回答
183 浏览

ios - 添加为 UIImageView 的子视图时视图被翻转

我在UIView通孔上绘制了一个三角形drawRect,然后将其添加UIView为主视图 ( UIView) 的子视图。

很容易,它显示了。

当我使用UIImageView.

UIView(主视图)添加UIImageView为子视图,并以此UIImageView添加UIView我在其上绘制三角形的子视图。

等级制度:

查看创作:

三角形垂直翻转。简单的解决方法是UIView再次垂直翻转,但我想知道为什么添加UIViewas 子视图UIImageView会导致这种翻转。

如果我将绘图所在的视图直接添加为主视图的子视图,则不会发生这种情况。

0 投票
0 回答
22 浏览

uitableview - 应用程序的 UIDesign 建议

我试图绘制我想为我的应用程序制作的 UI,该 UI 与比较板球运动员并提供他们的更新有关

在此处输入图像描述

现在您可以在上面看到在比较屏幕中有两个部分一个是两个用户可以喜欢和不喜欢的图像,另一个是您将获得您已经喜欢或不喜欢的上述图像的实时更新。

整个屏幕是可滚动的,并且在运行时设置比较部分的高度取决于我们在运行时获得的行数,也根据实时更新部分将下降......

我如何将设计视为 mainView-> ScrollView-> twoTableView 或两个 UIView(不确定 UITableview 是否允许我执行这种自定义单元格,其中图像位于中心,两个按钮并排)

如果我错了,如果有更好的方法来纠正我。

0 投票
1 回答
505 浏览

ios - 视图控制器容器偶尔会错过子控制器中的 viewWillAppear

我有一个带有子视图的根视图控制器,作为子视图控制器视图的包装器。基本思想是我的根控制器有一个左右视图控制器,它们都出现在屏幕上(类似于 splitviewcontroller)。加载时会在根视图控制器上弹出一个模式视图并询问详细信息。模态视图然后联系服务器,并在得到响应后关闭。然后根控制器使用以下代码添加子视图控制器:

添加视图控制器在哪里:

而 addViewToWrapper 只是将视图控制器的视图添加到 rootViewController 的相关子视图中,如下所示:

99% 的时间都可以正常工作。两个视图都会立即出现,并且 viewWillAppear 会在两个子控制器中触发。但是,有时屏幕会在短时间内保持白色,并且 viewWillAppear 不会在右侧视图控制器(编辑:和左侧)中触发。所有其他视图生命周期方法都会触发,只是不会触发 viewWillAppear。

不幸的是,我不能为整个类提供代码,因为它很复杂并且是专有的。但是,对于这种间歇性行为,此描述中是否有任何线索?

0 投票
1 回答
69 浏览

ios - iOS:用于实现指令覆盖:需要在布局另一个分支之前布局视图层次结构的一个分支

我正在尝试实现一个覆盖来向用户提供有关应用程序中其他视图的说明。这是视图层次结构的草图:

我需要InstructionView相对于 定位ViewToProvideInstructionsFor,但要做到这一点,我需要确保包含的视图层次结构的分支ViewToProvideInstructionsFor已经布局,以便我可以参考框架ViewToProvideInstructionsFor来设置框架InstructionView。我怎样才能做到这一点?

0 投票
2 回答
819 浏览

ios - 放置在 UIImage 上方时,分段控件不起作用

我有一个 ScrollView,其中包含一个 imageView(使用 addSubView 以编程方式创建)和一个视图,其中包含用于更改图片的分段控件。我添加了用于缩放的手势识别器。分段控件的水平位置是固定的。当我尝试单击分段控件并且图像放大太多时会出现问题。它不起作用。如果缩放级别很小,它会继续工作并在图像之间变化。
下面的两个屏幕截图说明了这种情况:1)分段控制工作时和 2)它不工作时。

http://cs617220.vk.me/v617220757/e375/hvRdXNe9SBY.jpg http://cs617220.vk.me/v617220757/e36e/E4auq4-kFL4.jpg

我认为,问题出在视图的层次结构中,当添加的子视图不与分段控制的视图重叠时 - 它可以工作,而当重叠时 - 它会停止。我试图将 imageView 放在底部,这是代码:

但这无济于事,问题仍然存在。如何将 imageView 放在堆栈的底部?

更新评论:我在 UIScrollView 和分段控件之间有小的 UIView。看来,我设法抓住了问题:它是水平固定代码。我使用 Reveal 应用程序来发现这一点。两个屏幕截图显示了问题:
一切都好 这里分段控件放置在小的 UIView 上方。稍微缩放后,屏幕看起来像:
UIView 滚动离开,但分段控件停留在正确的位置
所以,UIView 作为图片的其余部分消失了,并且没有固定的水平位置。有趣的是,如果我将分段控件直接放在 UIScrollView 上,它可以工作,但位置不是水平固定的。这是代码:

这不起作用(如果我尝试修复 UIView 的位置,而不是分段控制):

解决方案:
我决定摆脱所有辅助视图并为分段视图实现垂直滚动,而不是阻止向一个方向滚动。代码在这里:

视图层次结构如下:
查看层次结构
因此,分段控件直接放置在主视图上,而不是滚动视图上。垂直滚动时,它也会滚动,但水平滚动时,它不会滚动。感谢帮助。
由于 Departamento B 帮我解决了这个问题(这是他的主意),我在他的回答上打了勾。