2011-01-30 3 views
0

Я только что написал ответ кому-то еще и при тестировании. Оказывается, что метод layoutSubViews вызывается каждый раз, когда я анимация некоторых слоев (каждый раз, когда срабатывает таймер). Я не изменяю рамки UIView. layoutSubviews не следует вызывать только один раз в этом случае?- [UIView layoutSubviews]; называется каждый раз в анимации?

Я был бы признателен, если кто-то может объяснить, почему это происходит

Мой ответ здесь: Object angle based on current time

благодаря

ответ

0

Прежде всего, я не уверен, что я согласен с ответом, связанного : Я не вижу, как слои являются лучшим подходом, чем представления, учитывая, что UIViews - это просто обертки вокруг CALayer, призванные облегчить жизнь.

В отсутствии кого-либо еще, я думаю, что происходит потому, что вы добавили свои часы слоев, как подуровень одного UIView при преобразовании этих слоев он появляется к UIKit, что вы изменили геометрию вашего основного вида, вызывая отображение layoutSubviews. Но это более образованное предположение больше всего. Возможно, кто-то придет с лучшей идеей.

+0

Я сказал, что в этом случае слои лучше, поскольку со слоями нет необходимости перерисовывать полный вид. (Реализация метода drawRect: метод с вызовами CoreGraphics) Слои имеют небольшой вес и, вероятно, в этом примере нет такой разницы, но в более сложном случае это должно быть. Я попытаюсь добавить слой контейнера, чтобы посмотреть, правильно ли вы догадались;) – nacho4d