如何在iOS中创建动态文本模板?

时间:2019-02-14 11:11:04

标签: ios swift uiimageview uitextfield

我想创建一个动态文本模板供用户在iOS中键入。

以下是一些示例图片:

enter image description here

enter image description here

我曾经尝试过这样做,但我不知道这样做是正确的方法。

  var borderWidth: CGFloat = 5.0

  var view = UIView(frame: CGRect(x: 20, y: 60, width: 250, height: 100))
  view.layer.borderColor = UIColor.white.cgColor
  view.layer.borderWidth = borderWidth
  labelTemplate.addSubview(view)


  var mask = UIView(frame: CGRect(x: 20, y: 60, width: 260, height: view.frame.size.height-50))

  mask.backgroundColor = UIColor.black
  view.layer.mask = mask.layer

我应该如何创建允许用户将其字符串输入文本模板的内容?我应该在UILabel / UITextField后面添加UIImageView来创建吗?

2 个答案:

答案 0 :(得分:0)

如果模板的文本位置固定,则只需将UITextField放在应该放置的位置,然后让用户在此处输入文本,并在需要时限制最大字符数。 如果您的模板包含图形元素,则可以,在输入字段后添加UIImageView。 至于您的代码,请避免使用框架设置元素尺寸和位置,autolayout是可行的方法。

答案 1 :(得分:-1)

var backView: UIView!
var labelView: UILabel!

var maskPath: UIBezierPath!
var maskLayer: CAShapeLayer!
override func viewDidLoad() {
    super.viewDidLoad()

    backView = UIView()
    self.view.addSubview(backView)
    //do the constraints
    backView.backgroundColor = .red


    labelView = UILabel()
    self.view.addSubview(labelView)
    //do the constraints
    labelView.text = "Seven sticks of dynamite"
    labelView.font = UIFont.init(name: labelView.font.fontName, size: 34)
}

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()


    maskPath = UIBezierPath.init(rect: labelView.frame) // OR maskPath = UIBezierPath.init(rect: CGRect.init(x: labelView.frame.minX - 20, y: labelView.frame.minY - 20, width: labelView.bounds.width + 40, height: labelView.bounds.height + 40))
    maskLayer = CAShapeLayer.init()
    maskLayer.path = maskPath.cgPath
    backView.layer.mask = maskLayer
}

根据您在应用程序中的需要,backView可以是单色或图像,可以在添加到控制器的labelView周围制作蒙版。