美文网首页iOS DeveloperObjective-c
iOS开发之递归的简单使用

iOS开发之递归的简单使用

作者: 1c7d21358574 | 来源:发表于2016-04-25 17:25 被阅读5348次

    导语

    众所周知,递归是编程语言中一种较为常见的算法,然而鄙人目前的项目开发中还没用过什么算法,今天刚好有个页面的UI设置很适合递归来做,故试着用了下递归,代码量少了很多,效率提高不少,故此分享下,抛砖引玉。

          先说下需求场景,如下图所示,需设置所有UILabel的文字颜色为同一颜色,为了方便管理好子控件,每一行是一个UIView包裹着两个UIlabel,那么简单粗暴的方法就是每个UILabel都拖线,然后逐个设置文字颜色。然而这种方法对于崇尚“懒惰”的程序员来说,未免太过繁琐,所以“递归”就派上用场了。

    QQ20160425-0@2x.png

          废话不多说,直接上代码。我们通过下面这个方法递归实现传入的UIView里设置所有UILabel的文字颜色,只到遍历完所有子控件,方法退出。

    /**
     *  递归设置传入的UIView内所有UILabel的文字颜色
     *
     *  @param view 要设置的UIView
     */
    - (void)setupTextColor:(UIView *)view
    {
        for (UIView *subView in view.subviews) {
            if ([subView isKindOfClass:[UILabel class]]) {// 如果子控件是UILabel,则设置文字颜色
                UILabel *label = (UILabel*)subView;
                label.textColor = FontColorDark;
            } else { // 如果子控件不是UILabel,则调用自身继续遍历子控件
                [self setupTextColor:subView];
            }
        }
    }
    

          最后打个广告,我创建了一个iOS的专题,目前已经收录了几十篇不错的文章,大家有愿意分享的技术文章欢迎给我投稿,O(∩_∩)O谢谢!

    相关文章

      网友评论

      • 834f65bae4f0:递归确实是这样写的,但是结合上面的例子并不怎么实用啊,直接用tableViewCell不就搞定了吗,都不用自己创建Label,用自带的足矣
      • inoryshu:先不说你这是不是递归的正确用法。就说你这个需求,按你的写法,iOS行业都被你搞臭了!
      • U9995:没有出口吗 ? 会死循环吗 ?
        wolf_gt:子视图个数是有限的,是这样吧
        U9995:@遥遥锅锅 哦
        1c7d21358574:不妨自己写代码试试?

      本文标题:iOS开发之递归的简单使用

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