【问题标题】:Duplicate image with touch触摸复制图像
【发布时间】:2018-11-06 01:26:27
【问题描述】:

当用户触摸屏幕时,我试图在 Swift 4 中复制图像

var positionArray = Array(repeating: Array(repeating: 0, count: 2), count: 50)
var counter = 0
var pointNum = 0
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    if let touch = touches.first {
        let position = touch.location(in: self.view)
        let locx = Int(position.x)
        let locy = Int(position.y)
            positionArray[counter] = [locx, locy]
            print(positionArray[counter])
            counter = counter + 1
            point.center = position
            pointNum = pointNum + 1
    }
}

如您所见,这是我用来注册触摸的,但我只有一个图像(点)移动到用户触摸的位置。

【问题讨论】:

  • 我不确定我是否理解预期的结果。当用户触摸屏幕上的任何位置时,您想复制整个图像吗?因为现在,您正在保存触摸开始时的点数组。没有复制图像的代码。
  • 这正是我想要做的:我在某个位置只有一张图像,我希望相同的图像出现在用户触摸的地方而不消除第一个

标签: swift xcode uiimageview touchesbegan


【解决方案1】:

您的代码将您的点保存到一个点数组中,然后移动名为point 的对象的中心。 point 是图像视图吗?

如果您想在用户点击的任何地方创建图像的新副本,那么您需要创建图像的新副本。像这样的:

let bounds = point.bounds
let newImageView = UIImageView(frame: bounds)
newImageView.translatesAutoresizingMaskIntoConstraints = true
newImageView.image = UIImage(named: "MyImageViewName")
self.view.addSubView(newImageView)
newImageView.center = position

请注意,最好添加自动布局锚点,将新图像视图的中心锚定到超级视图的原点,但上面的代码应该工作。 (我想。我很少用newImageView.translatesAutoresizingMaskIntoConstraints = true。)

【讨论】:

  • 点是一个图像视图。感谢您的回复。马上试试!
  • 嘿,有没有办法在 UIViewController 中使用self.view.addSubView(newImageView)?还是我仅限于 UIView?
  • 该代码是在假设它将从视图控制器运行的情况下编写的。对于视图控制器,self.view 是视图控制器的内容视图。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多