美文网首页
算法5 -查找两个子视图的共同父视图

算法5 -查找两个子视图的共同父视图

作者: 李永开 | 来源:发表于2019-02-12 20:26 被阅读0次
    • 倒序的思维
            //找到view1的所有父视图
            UIView *view1;
            NSMutableArray *arr1 = [NSMutableArray array];
            UIView *temp = view1;
            while (temp.superview) {
                [arr1 addObject:temp.superview];
                temp = temp.superview;
            }
            
            //找到view2的所有父视图
            UIView *view2;
            NSMutableArray *arr2 = [NSMutableArray array];
            temp = view2;
            while (temp.superview) {
                [arr2 addObject:temp.superview];
                temp = temp.superview;
            }
    
            //开始查找---> 倒序遍历,因为他们的最顶端的父视图肯定都是UIWindow
            int i = 0;
            NSMutableArray *resultArr = [NSMutableArray array];//他们的共同父视图可能会有好多个
            while (i < MIN(arr1.count, arr2.count)) {
    
                //取最后一个父视图
                UIView *super1 = arr1[arr1.count - i -1];
                UIView *super2 = arr2[arr2.count - i -1];
                
                if (super1 == super2)
                {
                    [resultArr addObject:super1];
                    i ++;
                }
                else//不相等说明已经没有共同的父视图了
                {
                    break;
                }
            }
    

    相关文章

      网友评论

          本文标题:算法5 -查找两个子视图的共同父视图

          本文链接:https://www.haomeiwen.com/subject/cexleqtx.html