2015-05-30 1 views
0

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

@IBAction func Tap(sender: UIButton) { 
    counter += 1 
    CATransaction.begin() 
    CATransaction.setAnimationDuration(8.0) 
    txtLay!.frame = frameFromCounter() 
    CATransaction.commit() 
} 

enter image description here

ответ

0

CATextLayer рисует себя с помощью метода drawInContext:, поэтому любое изменение в оказанном представление (например, изменяя string свойство) будет также модифицировать contents слоя. В вашем случае вы изменяете размер слоя, изменяя размер хранилища резервной копии, который меняет contents, который добавляет неявную анимацию к этому свойству.

Если вы не хотите, чтобы анимация произойдет, вы можете использовать actions словарь, чтобы отключить неявные contents анимации:

txtLay!.actions = ["contents" : NSNull()] 

Однако отключение contents анимации вызовет скачок в этом случае, так что вы» вероятно, лучше не менять границы CATextLayer и просто вставлять его в суперслои, чтобы обеспечить любой дополнительный стиль/макет, который вы хотите.

+0

Хорошо, так что невозможно избежать отскока при изменении границ. Хотя мне не нравится это поведение, ответ, вероятно, правильный. Я решил свою проблему, манипулируя аффинным преобразованием. – ragnarius

 Смежные вопросы

  • Нет связанных вопросов^_^