我需要在 UIImageView
上添加一些标签。标签的文本可以通过点击它们来更改。实现这一目标的最佳方法是什么?我正在使用 Swift 编程语言。在 stackoverflow 上查找一些解决方案,我发现了一些使用 String.drawInRect
方法在矩形中绘制一些文本然后放置在 UIImageView
上的演练。但是像这样我不认为我能够更改文本,甚至无法识别它们上的触摸事件。请帮忙。
更新
到目前为止我的代码:
override func viewDidLoad() {
super.viewDidLoad()
let img = UIImage(named: "Image")
let imgView = UIImageView(image: img)
self.view.addSubview(imgView)
var myLabel = UILabel()
myLabel.text = "Hello There"
myLabel.textColor = UIColor.redColor()
myLabel.font = UIFont(name: "Marker Felt", size: 20)
myLabel.accessibilityIdentifier = "this is good!"
myLabel.frame = CGRect(x: img!.size.width/2 /* - myLable.width / 2 ? */, y: 0, width: img!.size.width, height: 40)
imgView.addSubview(myLabel)
imgView.userInteractionEnabled = true
myLabel.userInteractionEnabled = true
let tapGesture = UITapGestureRecognizer(target: self, action: "handlePanGesture:")
myLabel.addGestureRecognizer(tapGesture)
}
func handlePanGesture(sender: UITapGestureRecognizer) {
var senderView = sender.view as! UILabel
print(senderView.text)
senderView.text = "look how i changed!"
print(senderView.accessibilityIdentifier)
}
到目前为止,结果是肯定的,我有一张图像,上面有标签,可以响应触摸事件。现在我需要找到标签的宽度,以便在需要时可以有效地将它放在中间。然后我需要找到一种方法将标签放置在相对于图像左上角作为原点的精确坐标处。
我们将不胜感激对这两项任务的任何帮助。
最佳答案
在 ImageView
上添加标签是最好的方法。但您也可以通过在 ImageView
上添加 button
来实现。
我创建了一个示例,其中我在 Storyboard上创建了一个 ImageView
并在 ViewController 类中创建了它的导出,在 viewDidLoad
中我创建了一个标签并将其添加到标签并添加 UITapGestureRecognizer
标签。当用户点击标签时,我们更改了标签文本及其位置。
class ViewController: UIViewController {
@IBOutlet weak var winterImageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
let label = UILabel(frame: CGRect(x: 10, y: 0, width: self.winterImageView.frame.width - 10, height: 30))
label.textColor = UIColor.redColor()
label.userInteractionEnabled = true
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.handleTap(_:)))
label.addGestureRecognizer(tapGesture)
label.text = "Is Winter is coming, My Friend?"
self.winterImageView.addSubview(label)
}
在 handleTap
中更改标签文本和位置
/// handle tap here
func handleTap(sender: UITapGestureRecognizer) {
let senderView = sender.view as! UILabel
senderView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint(item: senderView, attribute: .CenterX, relatedBy: .Equal, toItem: self.winterImageView, attribute: .CenterX, multiplier: 1, constant: 0).active = true
NSLayoutConstraint(item: senderView, attribute: .CenterY, relatedBy: .Equal, toItem: self.winterImageView, attribute: .CenterY, multiplier: 1, constant: 0).active = true
print(senderView.text)
senderView.text = "Yes!!! Winter is coming, My Friend!!"
}
您可以从这里下载项目InteractiveLabel
关于ios - 如何在 UIImageView 之上添加交互式 UILabel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39828485/