Размер кадра компонента React Native Swift UI - PullRequest
0 голосов
/ 24 августа 2018

Я быстро разрабатываю компоненты пользовательского интерфейса, чтобы добавить в свое собственное мобильное приложение.У меня есть корневое представление, которое создается классом менеджера, который наследуется от RCTManager.Внутри этого представления я использую autolayout, чтобы определить размер и позиции подпредставлений.Тем не менее, некоторые из вложенных подпредставлений на самом деле должны знать размер кадра своего родительского представления (ширина и высота).Проблема в том, что мне нужны эти значения, когда метод init вызывается в корневом представлении, но, используя autolayout, кажется, что невозможно получить эти значения.При использовании собственного собственного реагирующего приложения кажется, что большая часть логики, которая обычно была бы в контроллере представления для чистого приложения ios, теперь находится в реальном представлении.Таким образом, такие методы, как viewDidLayoutSubviews, недоступны в менеджере представления или представлении.Я был бы очень признателен за любые рекомендации или помощь по этой проблеме.Заранее спасибо.

1 Ответ

0 голосов
/ 01 ноября 2018

Если вы правильно поняли ваш вопрос, я решил эту проблему с помощью UIView.layoutSubview. В рамках этого метода у вас должен быть доступ к фрейму / границам родительского UIView, который вы можете использовать для вычисления фрейма для вложенных дочерних представлений.

class MyView : UIView {
    var label:UILabel?

    override init(frame: CGRect) {
        super.init(frame: frame)
        self.frame = CGRect(x: 0, y: 0, width: 200, height: 200)
        self.backgroundColor = UIColor.green
        label = UILabel()
        label?.text = "Hello World!"
        label?.backgroundColor = UIColor.red
        self.addSubview(label!)
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    override func layoutSubviews() {
        label?.frame = self.bounds
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...