我正在使用以下内容尝试访问位于UIView内的UIScrollView内的所有UIButton。问题是代码似乎没有找到按钮并设置border属性。
UIView - > UIScrollView - > UIButtons。
我基本上想要遍历按钮并设置border属性。
for(UIView *v in [self.viewLightLeakChoices subviews]) {
if([v isKindOfClass:[UIButton class]]) {
v.layer.borderWidth = 0;
}
}
答案 0 :(得分:2)
试试这个
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;
}
}
输出
答案 1 :(得分:1)
首先确保您获得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;
}
}
答案 2 :(得分:1)
感谢帮助人员。我最终做了一堆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;
}
}
}
}
答案 3 :(得分:0)
我无法理解我期待你有滚动视图 - > uiview - >按钮
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;
}
}
}
答案 4 :(得分:-1)
你应该创建Button类,说MyButton扩展UIButton,如果这样做,就不需要遍历scrollview的子视图。
实现awakeFromNib方法并应用border,要应用border请参阅此SO帖子How to create border in UIButton?