Как создать динамический текстовый шаблон в iOS? - PullRequest
0 голосов
/ 14 февраля 2019

Я хотел бы создать динамический текстовый шаблон для ввода пользователем в 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

Как мне создать что-то, что позволит пользователю вводить свою строку в текстовый шаблон?Должен ли я создать, добавив UIImageView за UILabel / UITextField?

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019
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, который вы добавляете в контроллер.

0 голосов
/ 14 февраля 2019

Если в вашем шаблоне есть статические позиции для текста, просто поместите UITextField s там, где они должны быть, и позвольте пользователю вводить там текст, ограничивая максимальное количество символов, если это необходимо.Если ваши шаблоны содержат графические элементы, тогда да, добавьте UIImageView за полями ввода.Что касается вашего кода, воздержитесь от установки размеров и позиций элементов с помощью фреймов, autolayout - это путь.

...