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

2019-02-12  本文已影响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;
            }
        }
上一篇下一篇

猜你喜欢

热点阅读