Files
divkit/client/ios/DivKitPlayground/UI/DivView/VisibilityTrackingScrollView.swift
pkurchatov 27a3472171 Enabled blankLinesBetweenImports swiftformat rule
commit_hash:84ea24cbdf21ef89741080f38ec5e583172a2458
2024-12-20 12:41:02 +03:00

30 lines
775 B
Swift

import DivKit
import UIKit
import VGSL
final class VisibilityTrackingScrollView: UIScrollView {
var divView: DivView? {
didSet {
oldValue?.removeFromSuperview()
sizeChangedSubscription = divView?.addObserver { [weak self] _ in self?.setNeedsLayout() }
divView.map { addSubview($0) }
setNeedsLayout()
}
}
private var sizeChangedSubscription: Disposable?
private var divViewSize: CGSize {
divView?.cardSize?.sizeFor(parentViewSize: boundsSize) ?? .zero
}
override func layoutSubviews() {
super.layoutSubviews()
let divViewFrame = CGRect(origin: .zero, size: divViewSize)
divView?.frame = divViewFrame
divView?.onVisibleBoundsChanged(to: bounds.intersection(divViewFrame))
contentSize = divViewSize
}
}