当用户点击屏幕时创建多个UIView

时间:2014-12-30 17:47:16

标签: swift uiview touchesbegan

我想在用户点击屏幕时添加多个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)
}

1 个答案:

答案 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)