Как установить кадры подпредставлений только при установленном кадре parentView? - PullRequest
1 голос
/ 18 марта 2019

По сути, я создаю макет в стиле Tinder, в котором стеки UIViews накладываются друг на друга.Чтобы получить тени за округленным UIView, я создаю пользовательский UIView с именем MainSwipeCardView, который состоит из двух видов.Один из них называется SwipeCardView, а за ним стоит ShadowView.. Затем я последовательно создаю экземпляр MainSwipeCardView и устанавливаю его фрейм.

   func addCardFrame(index: Int, cardView: MainSwipeCardView){
    cardsView.append(cardView)

    var cardViewFrame = bounds
    let horizontalInset = (CGFloat(index) * self.horizontalInset)
    let verticalInset = CGFloat(index) * self.verticalInset

    cardViewFrame.size.width -= 2 * horizontalInset
    cardViewFrame.origin.x += horizontalInset
    cardViewFrame.origin.y += verticalInset
    cardView.frame = cardViewFrame
}

Рамка устанавливается в зависимости от индекса карты.Верхний будет самым большим, затем нижний будет иметь горизонтальную и вертикальную вставку и т. Д.

Как видите, я устанавливаю cardView.frame = cardViewFrame - cardViewFrame как кадр, которыймы рассчитали выше.Проблема, однако, в том, что cardView - это пользовательское представление класса MainSwipeCardView.Контент внутри этого представления (простой Shadow UIView и пользовательский SwipeCardView) должен иметь свой фрейм, настроенный в соответствии с фреймом родительского вида.Я не могу сделать это правильно.

Вопрос: Как установить фрейм двух пользовательских подпредставлений только после того, как установлен фрейм родительского представления.Так как фрейм родительского представления отличается (это зависит от индекса), я также хочу соответственно изменить размер подпредставлений.

1 Ответ

1 голос
/ 18 марта 2019

Я думаю, что вы можете использовать свойство Observers

let parventViewFram = parentView.bounds { didSet {
   //add your custom Subviews or edit your custom subviews by calling layoutSubviews
}}

, убедитесь, что вы инициализируете parentView перед доступом к его свойству

...