Tag: uiview hierarchy

检测一个UIView是否在父亲的另一个UIView后面

我有一个家长UIView几个子视图。 子视图是兄弟姐妹 – 子视图不是彼此的子视图。 (在他们的超级观点中,每个人都处于相同的等级水平) 例如: UIView *containerView = [[UIView alloc] initWithFrame:frame]; CustomUIView *childView = [[UIView alloc] initWithFrame:anotherFrame]; CustomUIView *yetAnotherChildView = [[UIView alloc] initWithFrame:anotherFrame]; [containerView addSubview:childView]; [containerView addSubview:yetAnotherChildView]; [containerView bringSubviewToFront:childView]; 我想要yetAnotherChildView能够检测到它被移回到视图的层次结构中。 如何才能做到这一点? 编辑 : 我明白, containerView可以知道什么子视图上面是什么 – 但我不想(不能) containerView视图通知其子视图,他们的顺序改变 – 想象一下,添加一个股票视图上的子视图 – 股票视图有不知道它的子视图,他们希望收到这样的通知。 子视图CustomUIView将需要观察其CustomUIView一些变化 例如(这可能是一个非常糟糕的解决scheme) CustomUIView -(id)initWithFrame { [self.superView addObserver:self forKeyPath:@"subViews" options:options context:context]; } – […]

确定UIView是否被其他视图覆盖?

我正在构build一个简单的纸牌游戏,在这个纸牌游戏中,纸牌会弹到一个中央纸牌上,当数字变得太大时,我想开始移除底牌。 不过,我会对每张卡片应用一些随机的旋转和定位,这意味着其中一些卡片的angular落会伸出来,等等。下面是截图: 我想要做的是确定视图的任何部分是否对用户可见,并删除其他视图完全覆盖的视图。 视图都是实例化的,它们都在同一个超级视图内,它们都在视图的范围内,所以使用这些方法是行不通的。 我需要找出一个视图是否已被其他视图完全覆盖,在这一点上我可以安全地删除它,而用户看不到任何东西消失。

Swift中的recursion描述方法?

有什么方法可以在Swift中使用[self.view recursiveDescription]? 我正在尝试使用这种方法,但我收到以下错误: 'UIView' does not have a member named 'recursiveDescription' 有什么build议么?

用键盘上的button显示UIView,就像在Skype,Viber信使(Swift,iOS)

我想创build附件视图,在input附件视图下,通过键盘,如在Skype应用程序或Viber: 我已经在这里问这样的问题,但build议这个问题的解决scheme不是那么优雅,因为当我拖动我的滚动视图顶部,我想我的附件UIView下移键盘(我使用UIScrollViewKeyboardDismissModeInteractive)。 所以我创build了一个函数,找出视图,键盘和我的自定义input附件视图放置在哪里: func findKeyboardView() -> UIView? { var result: UIView? = nil let windows = UIApplication.sharedApplication().windows for window in windows { if window.description.hasPrefix("<UITextEffectsWindow") { for subview in window.subviews { if subview.description.hasPrefix("<UIInputSetContainerView") { for sv in subview.subviews { if sv.description.hasPrefix("<UIInputSetHostView") { result = sv as? UIView break } } break } } break } } […]

如何添加UITableView标题上方的视差效果的图像,并保持标题粘滞

对不起,如果我不能很好地解释问题,但这是图像什么解释你我想做的每件事情: 我的问题是,我将如何使我的视图结构。 表格视图的标题应该固定在表格的顶部。 但是,表格视图标题上方的最顶部图片呢? 我将不得不添加UIScrollView内的表视图? 视差效应可以通过CATransform3D完成,但是我怎样才能达到我想要的,那就是我的问题。 有很多演示,但我想使它做到习惯。 请给我一些指导。 提前致谢 !!!

将子视图的X置于自动布局中将引发“未准备好约束”

我有一个自定义的UIView子类正在通过一个笔尖初始化。 在-awakeFromNib ,我创build了一个子视图,并尝试将它置于其超视图中。 [self setInteralView: [[UIView alloc] init]]; [[self internalView] addConstraint: [NSLayoutConstraint constraintWithItem: [self internalView] attribute: NSLayoutAttributeCenterX relatedBy: NSLayoutRelationEqual toItem: self attribute: NSLayoutAttributeCenterX multiplier: 1 constant: 0]]; 这打破了,并导致以下输出: 2013-08-11 17:58:29.628 MyApp[32414:a0b] The view hierarchy is not prepared for the constraint: <NSLayoutConstraint:0xc1dcc80 UIView:0xc132a40.centerX == MyView:0xc1315a0.centerX> When added to a view, the constraint's items must be descendants […]

使用hitTest:withEvent捕获超级视图框架外部的子视图:

我的问题:我有一个基本上占用了整个应用程序框架的一个EditView视图EditView和一个子视图MenuView ,它只占用底部ButtonView %,然后MenuView包含它自己的子视图ButtonView ,它实际上驻留在MenuView的界限之外像这样: ButtonView.frame.origin.y = -100 )。 (注意: EditView有其他的子视图不是MenuView的视图层次结构的一部分,但可能会影响答案。) 你可能已经知道这个问题了:当ButtonView在MenuView的范围内(或者更确切地说,当我的触摸在MenuView的范围内时), ButtonView响应触摸事件。 当我的触摸在MenuView的边界之外(但仍在ButtonView的边界内)时, ButtonView没有接收到触摸事件。 例: (E)是EditView ,它是所有视图的父视图 (M)是MenuView ,EditView的子视图 (B)是ButtonView ,MenuView的子视图 图: +——————————+ |E | | | | | | | | | |+—–+ | ||B | | |+—–+ | |+—————————-+| ||M || || || |+—————————-+| +——————————+ 因为(B)在(M)的框外,所以(B)区域的抽头将不会被发送到(M) – 实际上,(M)在这种情况下从不分析触摸,触摸被发送到层次结构中的下一个对象。 目标:我收集的压倒性hitTest:withEvent:可以解决这个问题,但我不明白如何。 在我的情况,应该hitTest:withEvent:在EditView (我的'主'超视图)重写? 或者应该在MenuView中重写,没有接收的button的直接超视图接触? 还是我错误地想这个? […]