详解CALayer的anchorPoint和position - 简书
这将是你最后一次纠结position与anchorPoint!
UIView.transform的高级玩法 + 位置计算:UIView.transform的高级玩法 - 掘金
//
// ViewController.swift
// UIView 绕定点旋转
//
// Created by Mengduan on 2023/5/5.
//
//分清楚anchorPoint 和 position 的区别 :anchorPoint是相对于自己本身的锚点 ,就像是一个图钉 钉着,其范围是[0,0]到[1,1],分别位于view的左上到右下,而position是相对于父视图的锚点,范围看父视图,表示在父视图上的锚点位置。
//要想改变view的anchorPoint而不改变frame 需要先设置anchorPoint 再设置frame 因为anchorPoint 和 position都会改变frame
import UIKit
class ViewController: UIViewController {
lazy var sonView : UIView = {
let sonView = UIView()
sonView.layer.anchorPoint = CGPointMake(0,0)
sonView.frame = CGRect(x: 100, y: 100, width: 50, height: 50)
sonView.backgroundColor = .systemBlue
return sonView
}()
lazy var secondView : UIView = {
let view = UIView(frame: CGRect(x: 30, y: 100, width: 50, height: 50))
view.backgroundColor = .systemRed
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
configUI()
changedUI()
}
func configUI(){
self.view.addSubview(secondView)
self.view.addSubview(sonView)
}
func changedUI(){
UIView.animate(withDuration: 4, delay: 0, animations: {
self.sonView.transform = CGAffineTransform(rotationAngle: 3.14/4)
})
}
}