view2 を view1 の subview にするなら、view2.frame の origin は (0, 0) で良いのでは。
swift
1class ViewController: UIViewController { 2 3 var sbuView = UIView() 4 5 override func viewDidLoad() { 6 super.viewDidLoad() 7 // Do any additional setup after loading the view. 8 9 let basePoint = CGPoint(x: self.view.bounds.width / 4, y: self.view.bounds.height / 2 - self.view.bounds.width / 4) 10 11 let baseSize = CGSize(width: self.view.bounds.width / 2, height: self.view.bounds.width / 2) 12 13 let baseFrame = CGRect(origin: basePoint, size: baseSize) 14 15 let view1 = UIView(frame: baseFrame) 16 view1.backgroundColor = .red 17 self.view.addSubview(view1) 18 19 let view2Size = CGSize(width: (self.view.bounds.width / 2) / CGFloat(0.5 + sqrt(3) / 2) , height: (self.view.bounds.width / 2) / CGFloat(0.5 + sqrt(3) / 2)) 20 let view2Frame = CGRect(origin: basePoint, size: view2Size) 21 let view2 = UIView(frame: view2Frame) 22 view2.transform = CGAffineTransform(rotationAngle: CGFloat.pi / 6) 23 view2.backgroundColor = .systemBlue 24 view1.addSubview(view2) 25 } 26 27 28} 29`` 30x、とyの位置をどのように指定したらview1の上にview2が綺麗にはみでず乗るでしょうか?今のままではおかしな位置にあります。 31![イメージ説明](46d8fe37bf45bf3dba0648195cbc6c27.png)
let view2Size = CGSize(width: (self.view.bounds.width / 2) / CGFloat(0.5 + sqrt(3) / 2) , height: (self.view.bounds.width / 2) / CGFloat(0.5 + sqrt(3) / 2))
let view2Point = CGPoint.zero
let view2Frame = CGRect(origin: view2Point, size: view2Size)
let view2 = UIView(frame: view2Frame)
view2.transform = CGAffineTransform(rotationAngle: CGFloat.pi / 6)
view2.backgroundColor = .systemBlue
view1.addSubview(view2)
このようにしましたが、はみでてしまいます。
あ、回転させてるんですね。はみ出ないようにしたいというのがどういうことで、実際はどうなってるのか、画像で説明してほしいですね。
画像の通り二つの角がはみ出してしまっているのでこれをはみでないようにしたいです。
view2 の中身を view1 の中心に合わせればいいのでは。(それでもはみ出る可能性はあるかも…。)
あなたの回答
tips
プレビュー