我希望能够检查是否所有按钮'背景颜色是UIColor.whiteColor。我通过按钮状态确定视图是处于搜索模式还是处于正常模式。
我希望使用以下内容执行类似的操作,但contains()
检查数组是否包含特定值。它在我的案例中不起作用,因为UIColor.whiteColor
是UIButton的属性。
if contains(categoryScrollView.subviews, UIColor.whiteColor) {
inSearchMode = false
}
然后,如果我按照以下方式进行操作,我不知道如何确保所有按钮的背景颜色都是白色的,因为只要按钮的背景颜色为白色,它就会通过验证这不是我需要的。
for button in categoryScrollView.subviews {
if button.backgroundColor == UIColor.whiteColor() {
inSearchMode = false
}
}
如何检查所有按钮的背景颜色?
答案 0 :(得分:2)
var allWhite = true
for button in categoryScrollView.subviews {
if button.backgroundColor != UIColor.whiteColor() {
allWhite = false
}
}
inSearchMode = !allWhite
但恕我直言,这根本不是一个很好的方法。您应该有一个代码来执行状态转换,并根据此状态将按钮设置为白色或非白色。
答案 1 :(得分:2)
我将这个检查括在一个函数中,就像这样(注意我要检查每个视图是一个按钮):
func allWhiteButtons(view: UIView)-> Bool{
for view in view.subViews {
if let button = view as? UIButton {
if button.backgroundColor != UIColor.whiteColor() {
return false
}
}
}
return true
}
答案 2 :(得分:0)
在你正在检查backgroundcolor的循环中添加一个像whiteBtnCount这样的计数器。如果计数器与颜色匹配则计数器,并在计数器到达按钮计数时断开循环。瞧,现在您知道所有按钮是否都是白色。
var whiteBtnCount: Int = 0
for button in categoryScrollView.subviews {
if button.backgroundColor == UIColor.whiteColor() {
whiteBtnCount += 1
if whiteBtnCount == btnCount { //ensure btnCount variable holds the number of buttons
inSearchMode = false
break
}
}
}
答案 3 :(得分:0)
如果你没有很多UIButtons并且它们已经被声明为IBOutlets,你可以创建一个遍历所有UIButton的函数:
for button in [yourButton1, yourButton2, yourButton2] {
if button.backgroundColor == UIColor.whiteColor {
// Do something
} else {
// Do something else
}
}
或者您也可以遍历self.view
的所有按钮:
for view in self.view.subviews as [UIView] {
if let button = view as? UIButton {
if button.backgroundColor == UIColor.whiteColor {
// Do something
} else {
// Do something else
}
}
}