将textview添加为图像ios swift的子层

时间:2018-07-11 11:56:45

标签: ios swift3 uiimageview textview catextlayer

let ss = CATextLayer()
  ss.frame = rect
  ss.backgroundColor = UIColor.blue.cgColor
  ss.foregroundColor = UIColor.cyan.cgColor
  ss.string = mytextView.text
  myImage.layer.addSublayer(ss)

我正在尝试将可编辑的textview添加为imageview的子层。问题是,我无法编辑,也无法为该textlayer添加手势识别器。我该如何使该Textlayer完全执行TextView的工作。

1 个答案:

答案 0 :(得分:1)

只需使用UITextViewUITextField并将其作为子视图添加到UIImageView,类似:

let textView = UITextView()
//configure text view like you want
//add constraints or size it as you want
myImage.addSubview(textView)

记住UIImageView只是UIView的另一个子类,因此您可以像常规UIView一样向其添加子视图。


继续您要处理的内容,因为您添加的某些视图是CALayer,有些将是UIView或两者的子类(例如UITextView是{ {1}}子类)

我会在您的课程中添加两个属性:

UIView

我知道这不是很迅速,因为您可以将任何东西都放入这两个var addedViews = [Any]() var undoStack = [Any]() 中。

然后,当您创建新的arraylayer时,还将其添加到view数组中:

addedViews

因此let layer = CAShapeLayer() layer.frame = CGRect(x: 30, y: 30, width: 100, height: 100) layer.backgroundColor = UIColor.red.cgColor layer.transform = CATransform3DMakeRotation(0.2, 0, 0, 1) addedViews.append(layer) 数组将保存对所有已添加视图的引用,因此,撤消操作时,您可以执行以下操作:

addedViews

如果您随后要重做更改,则可以执行相同的操作,但是您可以像这样从if let viewLayer = addedViews.last { if let view = viewLayer as? UIView { view.removeFromSuperview() } else if let layer = viewLayer as? CALayer { layer.removeFromSuperlayer() } undoStack.append(viewLayer) addedViews.removeLast() } 获取最后的视图:

undoStack