У меня есть ситуация, когда я хочу, чтобы одно подпредставление не было обрезано до границ суперпредставления, в то время как остальные подпредставления суперпредставления обрезаны до его границ. Есть ли способ исключить определенное значение UIView
из пределов его суперпредставления. Точно так же может UIView
указать, какие подпредставления он хочет / не хочет обрезать до своих границ?
Что касается кода, я использую Koloda для создания UIView
схожие с картами Tinder. У меня есть представление коллекции, чьи ячейки по сути являются представлениями Колоды. Всякий раз, когда карта начинает панорамировать, я устанавливаю для свойства clipsToBounds
представления коллекции ее ячейки значение false
. Это позволяет перемещать ячейку над панелью навигации без обрезки. Когда панорама заканчивается, свойство clipsToBounds
представления коллекции ячеек представления возвращается к true
.
import UIKit
import Koloda
class LikedUserCollectionViewCell: UICollectionViewCell {
@IBOutlet var swipeView: KolodaView!
var parentVC: MyViewController!
}
extension LikedUserCollectionViewCell: KolodaViewDelegate, KolodaViewDataSource {
func koloda(_ koloda: KolodaView, viewForCardAt index: Int) -> UIView {
//return a KolodaView, this code isn't important to the issue
return KolodaView()
}
func kolodaNumberOfCards(_ koloda: KolodaView) -> Int {
return 1
}
func kolodaPanBegan(_ koloda: KolodaView, card: DraggableCardView) {
self.parentVC.collectionView.bringSubviewToFront(self)
//Here, instead of unclipping all of the collection view's subviews, I would like to only unclip the one containing the subview that is being panned
self.parentVC.collectionView.clipsToBounds = false
}
func kolodaPanFinished(_ koloda: KolodaView, card: DraggableCardView) {
//Once the pan is finished, all of the collection view's subviews can be clipped again
self.parentVC.collectionView.clipsToBounds = true
}
func koloda(_ koloda: KolodaView, didSwipeCardAt index: Int, in direction: SwipeResultDirection) {
//Not relevant to the question
}
}
Проблема заключается в том, что существуют ячейки, которые частично прокручиваются из представления коллекции, но невсе же удалены из представления коллекции, поскольку они не полностью прокрутили представление представления, теперь они становятся видимыми, так как для clipsToBounds
представления сбора теперь установлено значение true
. Вот почему я хочу иметь возможность диктовать, какое из подпредставлений представления коллекции обрезается до его границ. Это поведение можно увидеть в следующем gif:

Итак, в итоге, есть способ, вместо того, чтобы отключить все подпредставленияиз границ их суперпредставления через superview.clipsToBounds = false
, я мог открепить только одно подпредставление от границ его суперпредставления?