从用户点击 Swift 将图像添加到 UIImageView

Posted

技术标签:

【中文标题】从用户点击 Swift 将图像添加到 UIImageView【英文标题】:Swift Add Image to UIImageView from User Tap 【发布时间】:2017-06-10 08:33:03 【问题描述】:

我有一个ScrollView,里面有一个ImageView。 在这里,用户可以选择图像上的一个点,它会打印出坐标。

我也在尝试将图像(“pin”)添加到点击的坐标,但不确定如何...

// MARK: - Outlets
@IBOutlet weak var containerView: UIView!
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var sharkImage: UIImageView!

// MARK: - View Did Load
override func viewDidLoad() 
    super.viewDidLoad()

    scrollView.minimumZoomScale = 1.0
    scrollView.maximumZoomScale = 6.0

    scrollView.delegate = self

    let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(tapAction))

    self.sharkImage.isUserInteractionEnabled = true
    self.sharkImage.addGestureRecognizer(tapGestureRecognizer)


// MARK: - Scroll View
func viewForZooming(in scrollView: UIScrollView) -> UIView? 
    return sharkImage


// MARK: - Functions
func tapAction(sender: UITapGestureRecognizer) 
    // Get points for the UIImageView
    let touchPoint = sender.location(in: self.sharkImage)
    print(touchPoint)

    // Get points from the image itself
    let z1 = touchPoint.x * (sharkImage.image?.size.width)! / sharkImage.frame.width
    let z2 = touchPoint.y * (sharkImage.image?.size.height)! / sharkImage.frame.height
    print("Touched point (\(z1), \(z2)")


【问题讨论】:

使用self.view.addSubview(your_img)。和your_img.frame = CGRect(frame_here) 【参考方案1】:

在你的tapAction:

let pin = UIImageView(frame: CGRect(x: touchPoint.x - 20, y: touchPoint.y - 20, width: 40, height: 40))
pin.image = UIImage(named: "pin")
sharkImage.addSubview(pin)

所以我正在做的是将xytouchPoint.xtouchPoint.y 添加到您当前的sharkImage 中的新UIImageView

【讨论】:

感谢 Rashwan - 它有效 - 唯一的缺点是它在水龙头的下方和右侧添加了图像。它不会在用户点击时将图像居中。 @pmanning,我们当然希望图像居中。检查更新的代码。你基本上设置减去宽度和高度。看看吧。

以上是关于从用户点击 Swift 将图像添加到 UIImageView的主要内容,如果未能解决你的问题,请参考以下文章

将项目添加到数组 Swift

从 URL 获取 UIView 的图像 [Swift]

Swift 3将图像从URL添加到UIImageView [重复]

使用 Parse (Swift 3) 注册用户时如何添加头像

将 AirPlay 添加到 AVAudioPlayer (Swift)

Swift 检测 UISlider 图像点击