Возможно, проблема с l.anchor
.
Метод setAnchor
устанавливает точку centre
frame
в слое. Вы установили центральную точку в верхнем левом углу (0,0). (1,1) будет справа внизу.
Слой позиционирует себя, используя свойство centre
. Это представляет координаты в суперслое. Поскольку вы изменили опорную точку, ваш слой будет смещен, поскольку свойство center теперь ссылается на верхний левый угол, но с такими же координатами подслоя.
Если вы установите якорь на (1,1), вы заметите, что нижний правый угол теперь будет там, где был верхний левый угол.
Чтобы решить вашу проблему, установите опорную точку и измените положение слоя, установив свойство centre
.
l.center = CGPoint (l.center.x - (l.frame.size.width/2), l.center.y - (l.frame.size.height/2);
Приведенный выше код должен помочь.