Анимированное усечение CATextLayer - PullRequest
0 голосов
/ 04 мая 2011

У меня есть CALayer с подслоем CATextLayer. Когда я применяю преобразование или иным образом изменяю размер CALayer, мне нужно, чтобы CATextLayer изменял размеры в пределах его родителя. После изменения размера CATextLayer также должен обрезать свои символы без искажения пропорции символов. Этот эффект можно увидеть в Garageband для iPad, когда вы изменяете размер клипа в виде последовательности (экран ниже).

Garageband screen

В моей попытке изменить размер CATextLayer в пределах границ его родительского слоя, я имею:

  • установить для свойства truncationMode моего CATextLayer значение kCATruncationMiddle.
  • установить свойство masksToBounds моего CALayer
  • установить прямоугольник рамки по умолчанию для CATextLayer (в противном случае он не рисуется)

Вот что происходит:

  • Когда я применяю анимированное преобразование к родительскому слою (посредством сенсорного события), символы CATextLayer растягиваются и искажаются.
  • Когда анимационное преобразование заканчивается, родительский слой перерисовывается. CATextLayer не появляется за пределами родительского слоя, но его прямоугольный фрейм остается на том уровне, который я изначально установил.

1 Ответ

1 голос
/ 05 мая 2011

То, что вы хотите сделать, это анимировать свойство CALayer и CATextLayer * bounds, а не их свойство transform.

...