我需要像这样在UIImage上使用多个textview。
我想在我的imageView中添加多个视图(文本+标签)。
谢谢 -
答案 0 :(得分:0)
希望这个想法对你有所帮助。
将X / Y轴信息传递给绘制动态UItextField
的某个函数func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?)
{
if let touch = touches.first {
let position = touch.location(in: self)
print(position.x)
print(position.y)
}
}
func addDynamicTextField(xAxis: CGFloat, yAxis: CGFloat)
{
let someFrame = CGRect(x: xAxis, y: yAxis, width: 100.0, height: 30.0)
let text = UITextField(frame: someFrame)
imageView.addSubview(text)
}
答案 1 :(得分:0)
点击此处查看我的详细示例:
How to add interactive UILabels on top of a UIImageView?
那里的代码添加了两个CALayers,可以检测点击并更改文本。使用相同类型的逻辑,您可以添加将处理移动/调整大小/旋转的平移/捏合/旋转处理程序。
在连接处理程序之后,就像在该示例中一样,这是剩余的功能:
func moveLayer(_ recognizer:UIPanGestureRecognizer) {
let p = recognizer.location(in: self)
if layer1.editMode {
layer1.position = p
}
if layer2.editMode {
layer2.position = p
}
}
func rotateLayer(_ recognizer:UIRotationGestureRecognizer) {
let p = recognizer.location(in: self)
if layer1.editMode {
layer1.anchorPoint = CGPoint(x: 0.5, y: 0.5)
layer1.transform = CATransform3DRotate(myRedEye.transform, recognizer.rotation, 0.0, 0.0, 1.0); }
if layer2.editMode {
layer2.position = p
}
}
func resizeLayer(_ recognizer:UIPinchGestureRecognizer) {
_ = recognizer.location(in: self)
if layer1.editMode {
layer1.transform = CATransform3DScale(myRedEye.transform, recognizer.scale, recognizer.scale, recognizer.scale)
recognizer.scale = 1
}
if layer2.editMode {
layer2.transform = CGAffineTransformScale(myGreenEye.transform, recognizer.scale, recognizer.scale)
}
}
这是我一年前写的代码,从未投入生产。如果我的记忆力很好,最棘手的部分是iOS如何区分捏合和旋转手势。由于两者都使用两个手指,因此结合调整大小和旋转会导致一些小的意外(恕我直言)行为。