iOS DeveloperObjective-c

iOS开发之递归的简单使用

2016-04-25  本文已影响5348人  1c7d21358574

导语

众所周知,递归是编程语言中一种较为常见的算法,然而鄙人目前的项目开发中还没用过什么算法,今天刚好有个页面的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谢谢!

上一篇下一篇

猜你喜欢

热点阅读