CALayer anchorPoint не работает должным образом с CGAffineTransform - PullRequest
0 голосов
/ 30 сентября 2011

У меня есть CALayer, содержащий несколько подслоев (CATextLayers).Я применяю преобразования в CALayer для некоторых обычных жестов (масштабирование, панорамирование).Все работает отлично, за исключением того, что масштабирование (масштабирование) выполняется в направлении нижнего левого угла вместо центра экрана.

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

Вот мой код:

// внутри функции init:

_layerMgr = [[CALayer alloc] init];

_layerMgr.frame = [[UIScreen mainScreen] bounds];

_layerMgr.anchorPoint = CGPointMake (0.5, 0.5);

// сделано для событий жестов:

CGAffineTransform tt = CGAffineTransformMakeTranslation (offset.x, -offset.y);

CGAffineTransform st = CGAffineTransformMakeScale (масштаб, масштаб);

CGAffineTransform rt = CGAffineTransformMakeRotation (вращение);

transform = CGAffineTransformConcat (tt, CGAffineTransformConcat (st, rt));

_layerMgr.transform = CATransform3DMakeAffineTransform (_transform);

Возможно, проблема связана с моейподпредставления?Я добавил их, используя метод addSubView ... ничего особенного ...

1 Ответ

0 голосов
/ 01 декабря 2011

попытайтесь преобразовать в "ВАШ" _layerMgr.transform вместо создания нового:

, например:

[_layerMgr setTransform:CGAffineTransformScale (_layerMgr.transform, 2, 2)];
...