我想在用户点击屏幕时添加多个UIViews我使用下面的代码,当我点击时它会创建一个UIView但删除前一个。 我做错了什么?
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
let touch = touches.anyObject()! as UITouch
let location = touch.locationInView(self.view)
println(location)
rectangle.frame = CGRectMake(location.x, location.y, 20, 20)
rectangle.backgroundColor = UIColor.redColor()
self.view.addSubview(rectangle)
}
答案 0 :(得分:1)
假设rectangle
是一个属性,此代码仅更改现有矩形的框架并将其重新添加到视图层次结构中。如果您希望每次用户开始触摸设备时添加新矩形,则每次都必须创建一个新的UIView实例。例如:
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
let touch = touches.anyObject()! as UITouch
let location = touch.locationInView(self.view)
println(location)
let rectangle = UIView(frame: CGRectMake(location.x, location.y, 20, 20))
rectangle.backgroundColor = UIColor.redColor()
self.view.addSubview(rectangle)
}
此外,如果这不是您的意图,您使用的代码不会将新视图置于触摸位置的中心位置,它的来源将会出现,但是视图将从那里到20点向下,20点到右边。如果您希望视图在触摸位置居中,我建议使用视图的中心属性:
let rectangle = UIView(frame: CGRectMake(0, 0, 20, 20))
rectangle.center = location
self.view.addSubview(rectangle)