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

  • 倒序的思维
        //找到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;
            }
        }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这一小节中,作者列举了四个例子,每个例子我都在自己的生活中感受到过,有着类似的心理体验,所以也颇有心得。 1.亲人...
    清奇ing阅读 3,538评论 1 0
  • 如何辨别新疆和田玉的真伪 肉眼识别和田玉有技巧 中国和田玉历史悠久,蜚声中外,琳琅满目的和田玉精品,是中华民族灿烂...
    古风雅韵_82fb阅读 929评论 0 0
  • 《追风筝的人》复盘 8146 许多年过去后,人们常常说陈年旧事可以被埋葬,然而我最终明白这是错的,因为往事会自行...
    城袍阅读 2,761评论 0 0