Что эквивалентно CALayer методу sizeToFit UIView?

Я ищу способ позволить CALayer изменять свой размер всякий раз, когда меняются его подслои (что означает либо изменение границ любого подслоя, либо изменение самого массива подслоя).

Когда я раньше работал с представлениями, мне это удавалось, реализуя sizeThatFits в моем пользовательском подклассе UIView, который автоматически вызывался sizeToFit при изменении подпредставлений представления.

Поскольку в CALayer есть метод, эквивалентный sizeThatFits, preferredSize, я был удивлен, не обнаружив эквивалента sizeToFit.


person bg890    schedule 23.02.2012    source источник
comment
Взгляните на это: stackoverflow.com/questions/8219588/   -  person Carles Estevadeordal    schedule 24.02.2012
comment
Я думаю, что это касается sizeThatFits, а не sizeToFit, поскольку он хочет знать, каким должен быть размер слоя. Я могу рассчитать этот размер (через предпочтительный размер), но мне нужен метод, который вызывается всякий раз, когда изменяются подпредставления (который затем вызовет предпочтительный размер и соответственно установит рамку слоя).   -  person bg890    schedule 24.02.2012
comment
Почему бы вместо этого просто не использовать UIView?   -  person Carles Estevadeordal    schedule 24.02.2012
comment
Кажется, что CALayer подходит лучше, мне не нужна сенсорная обработка, я получаю неявную анимацию, и мне не нужно беспокоиться о пересылке касаний, которые были ему отправлены. Более того, версия слоя должна быть немного быстрее.   -  person bg890    schedule 24.02.2012


Ответы (1)


Я думаю, вам нужно реализовать (переопределить) - (void)layoutSublayers ... * Подклассы могут переопределить это, чтобы * предоставить свой собственный алгоритм компоновки, который должен устанавливать фрейм * каждого подслоя

- (void)layoutSublayers
{
 // self.frame = aNewSubLayer.bounds
// basically do algorithm for setting frame and bounds for this(self) layer and subLayers here
}
person abdimuna    schedule 10.12.2013