Я пытаюсь реализовать логику c, которая напоминает функциональность слоя «Группа» в некоторых популярных дизайнерских приложениях.
Допустим, у меня есть класс в моем домене, который может иметь несколько дочерних элементов и родительских элементов этого типа. Я хочу, чтобы при обновлении кадра родителя дети пропорционально корректировали свой кадр. Точно так же, когда кадр ребенка изменяется, я бы хотел, чтобы родительский кадр обновлялся, оборачивая его дочерние элементы соответствующим образом.
class Layer {
var parent: Layer?
var children: [Layer]
var frame: CGRect {
didSet {
if parent != nil {
// Tell parent to update its frame
}
children.forEach { (child) in
// tell the child to update it's frame
}
}
}
}
Когда родительский кадр обновляется, он говорит своим детям обновить свои кадры, затем дети возвращаются к родителю с просьбой обновить его кадр. И мы попадаем в бесконечное l oop.
Мне было интересно, какой будет правильный способ реализовать это и есть ли какой-либо шаблон проектирования, который решает эту проблему.
Спасибо.