我有一个:
myViewController
- UIViewController
myFirstView
- UIView
mySecondView
- UIView
在myFirstView
内部我添加了一个名为UIView
的{{1}}对象作为myLittleView
窗口(myFirstView
UIPanGestureRecognizer`的子视图,以便用户可以拖动窗口中的视图。
我还在UIWindow) and added a
内添加了一个名为CGRect
的{{1}}对象,其中包含myFirstView
对象框架的框架。
我已将secondViewFrame
和mySecondView
个对象添加为myFirstView
视图的子视图。
现在我想检查mySecondView
是否位于myViewController
之上,我试图将此代码添加到myLittleView
的操作中但是它给出了错误的结果:
mySecondView
我知道如何让它发挥作用?
谢谢!
答案 0 :(得分:0)
- (void)listSubviewsOfView:(UIView *)view {
// Get the subviews of the view
NSArray *subviews = [view subviews];
// Return if there are no subviews
if ([subviews count] == 0) return; // COUNT CHECK LINE
for (UIView *subview in subviews) {
// Do what you want to do with the subview
NSLog(@"%@", subview);
// List the subviews of subview
[self listSubviewsOfView:subview];
}
}
您可以对其进行一些修改,以检查视图是否包含带标记的子视图。
使用标记进行更新
初始化secondView时设置标记:
[mySecondView setTag:10];
然后使用此方法:
- (void)checkIfView:(UIView *)view isParentOfViewWithTag:(NSInteger)tag {
// Get the subviews of the view
NSArray *subviews = [view subviews];
// Return if there are no subviews
if ([subviews count] == 0) return; // COUNT CHECK LINE
for (UIView *subview in subviews) {
if ([subview tag]==tag) {
//Do something
NSLog(@"The view is parent of the view with tag 10");
break;
}
[self listSubviewsOfView:subview];
}
}
在你的代码上:
[self checkIfView:myLittLittleView isParentOfViewWithTag:10];
答案 1 :(得分:0)
你正在寻找的是你的 UIView 在3D坐标中的风景,一个在另一个前面,所以我建议你用3D坐标系统解决这个问题
@IBOutlet weak var myFirstView : UIView!
@IBOutlet weak var mySecondView : UIView!
您已经通过定义框架来定义 x 和 y 坐标,以便更改 z-position 强>使用: -
mySecondView.layer.zPosition = 0 //Second view on top
myFirstView.layer.zPosition = -1 //First view behind your mySecondView
每当您想要更改各自的位置时,只需为这两个值交换.zPosition
值。
检查他们的相对位置: -
if mySecondView.layer.zPosition == 0 {
print("secondView is on the top of firstView")
}else{
print("firstView is on the top of secondView")
}