Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.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
Swift 每次调用Func时都会重写UIView_Swift_Nslayoutconstraint - Fatal编程技术网

Swift 每次调用Func时都会重写UIView

Swift 每次调用Func时都会重写UIView,swift,nslayoutconstraint,Swift,Nslayoutconstraint,我的目标是在每次按下按钮时放置uiview。在我的gif中,您可以看到每次调用蓝色按钮时,它都被过度写入。当按下代码时,gif中应有2个UIView。您可以看到第一个视图消失的位置的透明视图。基本上,这段代码的所有错误在于当调用addBlackView时,它应该添加到屏幕上的视图中,基本上就像一个无限数组 问题是,每次执行addBlackView时,您都在重复使用和重置blackView,因此您所做的更改将丢失(因此,在按下按钮后视图会回到中间位置) 您需要在addBlackView中创建一个

我的目标是在每次按下按钮时放置uiview。在我的gif中,您可以看到每次调用蓝色按钮时,它都被过度写入。当按下代码时,gif中应有2个UIView。您可以看到第一个视图消失的位置的透明视图。基本上,这段代码的所有错误在于当调用addBlackView时,它应该添加到屏幕上的视图中,基本上就像一个无限数组


问题是,每次执行
addBlackView
时,您都在重复使用和重置
blackView
,因此您所做的更改将丢失(因此,在按下按钮后视图会回到中间位置)

您需要在
addBlackView
中创建一个完整的新视图,它将是您正在操作的“当前视图”,然后向其中添加手势识别器。然后,一旦再次执行
addBlackView
,“currentView”将被“验证”(存储在数组中或需要对其执行的任何操作中),然后创建另一个以进行操作

大概是这样的:

private func addBlackView() {
    let newBlackView = UIView(frame: CGRect(0, 0, 10, 10)) // whatever frame you want
    self.view.addSubview(newBlackView)
    self.currentView = newBlackView
}

问题是,每次执行
addBlackView
时,您都在重复使用和重置
blackView
,因此您所做的更改将丢失(因此,在按下按钮后视图会回到中间位置)

您需要在
addBlackView
中创建一个完整的新视图,它将是您正在操作的“当前视图”,然后向其中添加手势识别器。然后,一旦再次执行
addBlackView
,“currentView”将被“验证”(存储在数组中或需要对其执行的任何操作中),然后创建另一个以进行操作

大概是这样的:

private func addBlackView() {
    let newBlackView = UIView(frame: CGRect(0, 0, 10, 10)) // whatever frame you want
    self.view.addSubview(newBlackView)
    self.currentView = newBlackView
}

我在类型为“ViewController”的值处遇到一个错误,没有成员“currentView”“currentView”只是我为一个属性编写的名称,该属性将保存您正在操作的当前黑色视图,您必须创建它。我在“ViewController”类型的值处收到一个错误,没有成员“currentView”“currentView”只是我为一个属性编写的名称,该属性将保存您正在操作的当前黑色视图,您必须创建它。