Как сохранить позицию UIView C в UIView A?IOS

Программируем под IOS
Anonymous
Как сохранить позицию UIView C в UIView A?

Сообщение Anonymous »

Я хочу переместить UIViewB и сохранить положение всех представлений, как будто ничего не произошло. Я хочу, чтобы viewC вернулся в исходное место до перемещения viewB. Как? Это должно применяться ко всем углам, независимо от того, как вращается viewB. Как мне это сделать?

Код: Выделить всё

import UIKit

class ViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()

// Create UIViewA
let viewA = UIView(frame: CGRect(x: 0, y: 0, width: 500, height: 500))
viewA.backgroundColor = .red
self.view.addSubview(viewA)

// Create UIViewB
let viewB = UIView(frame: CGRect(x: 150, y: 150, width: 200, height: 200))
viewB.backgroundColor = .green
viewA.addSubview(viewB)

// Create UIViewC
let viewC = UIView(frame: CGRect(x: 50, y: 50, width: 100, height: 100))
viewC.backgroundColor = .blue
viewB.addSubview(viewC)

// Initial position of viewC in viewA's coordinate system
let initialCPositionInA = viewC.convert(viewC.bounds.origin, to: viewA)

// Rotate viewB by 45 degrees
viewB.transform = CGAffineTransform(rotationAngle: .pi / 4.5) // 45 degrees

// Calculate the movement delta of viewB
let movementDelta = CGPoint(x: 0, y: -50)

// Move viewB up by -50 pixels
viewB.center = CGPoint(x: viewB.center.x, y: viewB.center.y + movementDelta.y)

// I want viewC back to the original place before viewB is moved how ? This must apply to all angles regardless how viewB rotate
}
}
Я пробовал много разных решений, перемещая позицию y UIViewC, но он возвращает странные результаты, поскольку к UIViewB применяется преобразование, которое также применяется к UIViewC.

Подробнее здесь: https://stackoverflow.com/questions/787 ... n-uiview-a

Вернуться в «IOS»