我遇到了这个方法的问题。我在storyboard中添加了三个视图。如下所示:
然后我写了一些代码:
if (CGRectContainsRect(self.redView.frame,self.blueView.frame)) {
NSLog(@"redView contain blueView!");
} else {
NSLog(@"redView not contain blueView!");
}
if (CGRectContainsRect(self.redView.frame,self.yellowView.frame)) {
NSLog(@"redView contain yellowView!");
} else {
NSLog(@"redView not contain yellowView!");
}
NSLog(@"%@ %@ %@",NSStringFromCGRect(self.redView.frame),NSStringFromCGRect(self.blueView.frame),NSStringFromCGRect(self.yellowView.frame));
{{36, 74}, {240, 260}} {{8, 8}, {120, 120}} {{112, 135}, {120, 120}}
但结果是:redView不包含blueView! redView包含yellowView! 我只是想知道为什么redView不包含blueView?
答案 0 :(得分:0)
示例中的坐标显示蓝框实际上不包含在红框中。这可能是因为观点并不共享同一个超级视图。看起来蓝色视图是红色视图的子视图。
你必须确保......
如何转换rects:
CGRect yellowRect = [self.yellowView convertRect:self.yellowView.bounds
toView:self.redView];
if (CGRectContainsRect(self.redView.bounds, yellowRect)) {
...