Анимировать усечение CATextLayer

#iphone #objective-c #ios #core-animation #calayer

#iPhone #objective-c #iOS #ядро-анимация #calayer

Вопрос:

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

Экран Garageband

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

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

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

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

Ответ №1:

Похоже, что вы хотите сделать, это анимировать как CALayer ‘s, так и CATextLayer свойство bounds transform ‘s, а не их свойство. Их свойство.