Как программно заменить UILabel на UIView - PullRequest
0 голосов
/ 20 марта 2020

У меня есть UILabel, который вложен в StackView, и мне нужно создать UIView, который будет занимать ту же самую позицию на экране, что и UILabel, а затем скрыть UILabel (это премиальная часть приложения, поэтому, если это бесплатная версия, мне нужно заменить данные значком замка). Мой код ниже создает представление, но его расположение находится далеко внизу справа от метки. Как я могу выполнить sh, что я пытаюсь сделать?

                let testView = UIView()
                testView.frame = CGRect(x: hrrLabel.frame.origin.x, y: hrrLabel.frame.origin.y, width: hrrLabel.frame.width, height: hrrLabel.frame.height)
                testView.backgroundColor = UIColor.red
                hrrLabel.isHidden = true
                hrrLabel.addSubview(testView)

1 Ответ

1 голос
/ 20 марта 2020

Просто поместите testView в границы hrrLabel. (Предполагая, что представление, которое вы хотите поместить в ТОП, это testView - не совсем уверен, какое представление должно быть каким).

let testView = UIView()
testView.frame = hrrLabel.bounds //Bounds here, not frame
testView.backgroundColor = UIColor.red
hrrLabel.isHidden = true
hrrLabel.addSubview(testView)

//Hide view without hiding subviews
hrrLabel.backgroundColor = hrrLabel.backgroundColor.withAlphaComponent(alpha: 0)
//hrrLabel.isHidden = true

Найти разницу между CGRect.bounds и CGRect.frame и это значительно облегчит создание подпредставлений.

...