Swift: центр NSAttributedString в представлении по горизонтали и вертикали - PullRequest
0 голосов
/ 30 января 2019

Привет,

У меня есть класс CardButton: UIButton.В методе рисования этого CardButton я хотел бы добавить и центрировать (вертикально и горизонтально) NSAttributed String, который в основном является одним Emoji, внутри него.Результат будет выглядеть примерно так:

enter image description here

Однако NSAttributedString можно выровнять только по центру в горизонтальном измерении внутри контейнера.

Моя идея для решения:

  1. создать контейнер ViewView внутри CardButton
  2. center container View как вертикально, так и горизонтально в своем контейнере (то есть CardButton)
  3. добавить NSAttributedString внутри containerView и размер containerView, чтобы соответствовать шрифту строки.

Таким образом, результат будет выглядеть примерно так:

enter image description here

Моя попытка сделать это выглядит следующим образом:

class CardButton: UIButton {

override func draw(){
//succesfully drawing the CardButton

let stringToDraw = attributedString(symbol, fontSize: symbolFontSize) //custom method to create attributed string

let containerView = UIView()
containerView.backgroundColor = //green
addSubview(containerView)

containerView.translatesAutoresizingMaskIntoConstraints = false
let centerXConstraint = containerView.centerXAnchor.constraint(equalTo: (self.centerXAnchor)).isActive = true
let centerYConstraint = containerView.centerYAnchor.constraint(equalTo: (self.centerYAnchor)).isActive = true

stringToDraw.draw(in: containerView.bounds)
containerView.sizeToFit()

}
}

Короче говоря, я ужасно потерпел неудачу.Сначала я попытался добавить containerView в cardButton, сделал зеленый фон, задал фиксированную ширину и высоту, чтобы убедиться, что он правильно добавлен как подпредставление.Это сделал.Но как только я пытаюсь наложить активные ограничения на это, оно полностью исчезает.

Есть идеи, как к этому подойти?

...