Масштабирование UIView из точки, отличной от центра, поиск альтернатив anchorPoint - PullRequest
4 голосов
/ 16 марта 2011

Я использовал CGAffineTransformMakeScale для масштабирования UIView.Это масштабирует его по умолчанию anchorPoint, который (.5, .5) - центр.Я хотел бы масштабировать его так, чтобы он растягивался влево, как если бы он увеличивался влево.Я могу сделать это, установив anchorPoint в правом центре.Однако это вызывает проблемы с настройкой кадра и т. Д. Есть ли лучший способ применить преобразование масштаба, как я хочу.Я думал, что смогу сделать это с помощью пользовательской матрицы преобразования, но я плохо разбираюсь в математике.

Ответы [ 2 ]

3 голосов
/ 16 марта 2011

Используйте anchorPoint, чтобы обойти странность кадра, просто сохраните и перезагрузите его, как в этом ответе .

1 голос
/ 23 января 2018

Сначала запустите этот код, и у вас будет лучшее понимание.Здесь lblLabel - мой ярлык, вы можете изменить его соответственно.Также проверьте CGPoint (x: 10, y: 98) и CGPoint (x: 10, y: 108) в соответствии с вашими требованиями.Это будет анимировано из верхнего левого угла метки.Измените точку привязки и положение в соответствии с вашими требованиями.



self.lblLabel.layer.anchorPoint = CGPoint(x: 0.0,y :0.0)
        self.lblLabel.layer.position = CGPoint(x: 10, y: 98)
        lblLabel.transform = CGAffineTransform(scaleX: 0.5, y: 0.5)

        UIView.animate(withDuration: 1.0) {
             self.lblLabel.layer.position = CGPoint(x: 10, y: 108)
            self.lblLabel.transform = CGAffineTransform(scaleX: 1.2, y: 1.2)
        }
...