导语
众所周知,递归是编程语言中一种较为常见的算法,然而鄙人目前的项目开发中还没用过什么算法,今天刚好有个页面的UI设置很适合递归来做,故试着用了下递归,代码量少了很多,效率提高不少,故此分享下,抛砖引玉。
先说下需求场景,如下图所示,需设置所有UILabel
的文字颜色为同一颜色,为了方便管理好子控件,每一行是一个UIView
包裹着两个UIlabel
,那么简单粗暴的方法就是每个UILabel都拖线,然后逐个设置文字颜色。然而这种方法对于崇尚“懒惰”的程序员来说,未免太过繁琐,所以“递归”就派上用场了。
废话不多说,直接上代码。我们通过下面这个方法递归实现传入的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谢谢!
网友评论