如何访问UIView内的UIScrollView中的所有UIButtons?

我正在使用以下尝试访问位于UIView内的UIScrollView内的所有UIButtons。 问题是代码似乎没有findbutton并设置边框属性。

UIView – > UIScrollView – > UIButtons。

我基本上想通过button循环,并设置边框属性。

for(UIView *v in [self.viewLightLeakChoices subviews]) { if([v isKindOfClass:[UIButton class]]) { v.layer.borderWidth = 0; } } 

试试这个

 for (id obj in scrollView.subviews) { NSString *classStr = NSStringFromClass([obj class]); if ([classStr isEqualToString:@"UIButton"]) { UIButton *button = (UIButton*)obj; button.layer.borderWidth = 2.0; button.layer.borderColor = [UIColor greenColor].CGColor; } } 

产量

在这里输入图像说明

谢谢你们的帮助 我最终做了一堆for循环到UIButtons。

 for(UIView *v in [self.viewLightLeakChoices subviews]) { if([v isKindOfClass:[UIScrollView class]]) { for(UIView *subView in [v subviews]) { for(UIButton *btn in [subView subviews]) { btn.layer.borderWidth = 0; } } } } 

首先确保你得到了UIScrollView子视图,因为你的结构是

UIView> UIScrollView> UIButton

如果你在self.viewLightLeakChoices中只有1个滚动视图,那么设置你的scrollview标签= 1000并直接访问你的滚动视图,所以现在你不需要使用循环。 执行速度会很快

 UIScrollView *scrlV = [self.viewLightLeakChoices viewWithTag:1000]; for (UIButton *btn in scrlV.subviews) { if ([btn isKindOfClass:[UIButton Class]]) { btn.layer.borderWidth = 1.0; btn.layer.borderColor = [UIColor whiteColor].CGColor; } } 

我无法得到我期待你有scrollview – > uiview – >button

  for(UIView *myview in Scrollview.subviews) { for ( id mybutton in myview.subviews) { if ([mybutton isKindOfClass:[UIButton class]]) { UIButton *mybtn=(UIButton *)mybutton; mybtn.layer.borderWidth=0; } } } 

你应该创buildButton类,如MyButton范围的UIButton,如果你这样做,没有必要循环滚动视图的子视图。

执行awakeFromNib方法并应用边框,以应用边框参考这篇SOpost如何在UIButton中创build边框?