bounds.size не может получить правильный размер в реальном времени

У меня есть объект UIView в контроллере представления и хочу добавить объект CALayer в объект UIView. Конфигурация автоматического макета объекта UIView показана следующим образом. (Извините, я пока не могу встроить пиксель, пожалуйста, нажмите вместо этого ссылки) Ссылка 1 Ссылка 2 (серый прямоугольник - объект UIView)

Я установил размер объекта CALayer (myCAlayer) и добавил его в объект UIView (myUIView) с помощью следующих кодов.

myCALayer.frame = myUIview.layer.bounds
myUIview.layer.addSublayer(myCALayer)

Я ожидал, что muCALyer может точно заполнить myUIView. Однако, пожалуйста, обратитесь к ttp://imgur.com/V4AN1Uy (извините, пожалуйста, откройте эту ссылку вручную, потому что я не могу опубликовать более 2 ссылок), myCALayer (серый диапазон) вышел за пределы myUIView (зеленая линия).

От po myUIview.layer.boundsЯ обнаружил, что CGSize это:

размер: CGSize* - ширина: 500,0 - высота: 380,0

где кажется, что ширина =500 была вычислена из 600-2*50 (600 - это ширина по умолчанию контроллера представления при автоматическом макете), а не фактическая ширина myUIView при запуске приложения. Фактический должен быть намного уже. Кроме того, высота имеет ту же проблему.

Есть ли способ получить реальную ширину / высоту? Спасибо!

1 ответ

Решение

Это решено.

myCALayer.frame = myUIview.layer.bounds
myUIview.layer.addSublayer(myCALayer)

Проблема заключается в том, что код выше был в методе viewDidLoad(). Однако, похоже, его следует переместить в viewDidAppear(). Теперь проблема устранена.

Может быть, это потому, что макет еще не закончен в viewDidLoad(), но закончен в viewDidAppear().

Другие вопросы по тегам