По сути, я создаю макет в стиле 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) должен иметь свой фрейм, настроенный в соответствии с фреймом родительского вида.Я не могу сделать это правильно.
Вопрос: Как установить фрейм двух пользовательских подпредставлений только после того, как установлен фрейм родительского представления.Так как фрейм родительского представления отличается (это зависит от индекса), я также хочу соответственно изменить размер подпредставлений.