Макет программно созданных UILabels в UIView - PullRequest
0 голосов
/ 19 марта 2020

У меня есть это:

enter image description here

Создано с помощью этого фрагмента кода:

// Add hashtag collection to a post
func addHashtags(container: UIView, constraint: NSLayoutConstraint) -> Void {

    let screenSize: CGRect = UIScreen.main.bounds
    let screenWidth = screenSize.width - 16 - 16

    var currentOriginX: CGFloat = 0
    var currentOriginY: CGFloat = 0

    for j in 0..<self.pseudo.count {
        if currentOriginY < 144 {
            // Create a new label
            let labelHashtag = RoundedLabel()
            labelHashtag.rounded = true

            tagLabels.append(labelHashtag)

            print(tagLabels.count)

            // Set its properties (title, colors, corners, etc)
            labelHashtag.text = pseudo[j] as? String
            labelHashtag.font = UIFont.systemFont(ofSize: 12, weight: .semibold)
            labelHashtag.textAlignment = .center
            labelHashtag.textColor = UIColor.black
            labelHashtag.backgroundColor = UIColor.white
            labelHashtag.layer.borderColor = UIColor(red:0.88, green:0.88, blue:0.88, alpha:1.0).cgColor
            labelHashtag.layer.borderWidth = 1

            // Set its frame width and height
            labelHashtag.frame.size.width = labelHashtag.intrinsicContentSize.width + tagPadding
            labelHashtag.frame.size.height = tagHeight

            // Add it to the scroll view
            container.addSubview(labelHashtag)

            // If current X + label width will be greater than container view width
            // .. move to next row

            if (currentOriginX + labelHashtag.frame.width > screenWidth) {
                tagLabels[0].textColor = .red
                print("übrig")
                print(screenWidth - currentOriginX)
                currentOriginX = 0
                currentOriginY += tagHeight + tagSpacingY
            }

            // Set the btn frame origin
            labelHashtag.frame.origin.x = currentOriginX
            labelHashtag.frame.origin.y = currentOriginY

            // Increment current X by btn width + spacing
            currentOriginX += labelHashtag.frame.width + tagSpacingX

        } else if currentOriginY == 90 {
            }

        // Update container view height
        constraint.constant = currentOriginY + tagHeight
        }

    container.layoutIfNeeded()
    }

Я хочу центрировать все элементы в каждом ряду. Я предполагаю, что должен рассчитать оставшуюся ширину моего UIView и добавить поле для первого элемента.

Как я могу добавить поле для моей UILabel? Я могу получить к нему доступ через tagLabels [0] и думаю, что знаю, как рассчитать оставшуюся ширину, но не знаю, как мне добавить к ней запас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...