Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在swift中检查视图的背景色_Ios_Swift - Fatal编程技术网

Ios 在swift中检查视图的背景色

Ios 在swift中检查视图的背景色,ios,swift,Ios,Swift,例如,假设我有一个白色背景,那么每次触摸视图时,屏幕上都会添加一个大小为60x60的蓝色框。如果我一直在屏幕上点击,直到整个视图变成蓝色,我如何使用代码通知用户,例如使用警报控制器,告诉用户视图现在已完全改变颜色 如果这对任何人来说都是有意义的,我将感谢任何建议:正如其他人所说,最好的方法是保留对2D数组的引用以与UI关联。首先,我会: 1创建名为overlayView的UIView子类。这将是视图控制器视图顶部的视图覆盖。此子类将重写initframe:CGRect。您可以在初始化时实现NxM

例如,假设我有一个白色背景,那么每次触摸视图时,屏幕上都会添加一个大小为60x60的蓝色框。如果我一直在屏幕上点击,直到整个视图变成蓝色,我如何使用代码通知用户,例如使用警报控制器,告诉用户视图现在已完全改变颜色


如果这对任何人来说都是有意义的,我将感谢任何建议:

正如其他人所说,最好的方法是保留对2D数组的引用以与UI关联。首先,我会:

1创建名为overlayView的UIView子类。这将是视图控制器视图顶部的视图覆盖。此子类将重写initframe:CGRect。您可以在初始化时实现NxM网格。您还将根据需要创建和添加子视图

例如:

let boxWidth: CGFloat = 60
let boxHeight: CGFloat = 60
let boxFrame: CGRect = CGRectMake(0, 0, 600, 600)

override init(frame: CGRect) {
    super.init(frame: boxFrame)
    for i in 1 ... 10 {   //row
        for j in 1...10 {   //column
            let xCoordinate: CGFloat = CGFloat(CGFloat(i) * boxWidth)
            let yCoordinate: CGFloat = CGFloat(CGFloat(j) * boxHeight)
            let boxFrame: CGRect = CGRect(x: xCoordinate, y: yCoordinate, width: boxWidth, height: boxHeight)
            var subView: UIView = UIView(frame: boxFrame)
            subView.backgroundColor = UIColor.greenColor()
            self.addSubview(subView)
        }
    }
}
2覆盖触摸BeganTouches:NSSet,覆盖视图中包含事件:UIEvent。实现应该如下所示:

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
        let touch: UITouch = touches.anyObject() as UITouch
        let touchLocation: CGPoint = touch.locationInView(self)

        for subView in self.subviews {
            if(CGRectContainsPoint(subView.frame, touchLocation)) {
                subView.removeFromSuperview()
            }
        }
}
2a您还需要创建一个函数来通知2D阵列此子视图已被删除。这将从if语句中调用。此外,此函数将检测数组是否为空,所有值都设置为false

2b如果您不需要对模型的引用,您不关心点击了哪些框,只关心它们是否全部消失,您可以跳过2a并检查self.subviews.count==0。如果是这种情况,则根本不需要二维阵列。如果此条件通过,您可以根据需要向用户提供警报


3在主视图控制器中创建覆盖视图,并将其添加为子视图

箱子是否卡在某个位置?也就是说,如果我点击20,40,它会从0,0填充到60,60还是从20-30,40-30填充到20+30,40+30?@milo526是的,框显示在你点击的同一位置,一旦你点击了所有地方,最终填充屏幕。@zouv然后你可以按照@milo256所说的做,在屏幕上,您可以将其视为一个NxM表格,其中每个方格的大小为60x60,如果单元格被标记为true或false,则视为true,如果所有单元格都被标记,则显示您的警报。@VictorSigler有趣的想法,感谢您的输入!非常感谢你花时间做这一切,这对我很有帮助。真的很感激!