Skip to content

Instantly share code, notes, and snippets.

@Demerro
Demerro / NavigationHeaderView.swift
Last active August 7, 2024 15:20
SwiftUI wrapper around private API _UINavigationBarPalette
// https://x.com/SebJVidal/status/1748659522455937213
import SwiftUI
extension View {
func navigationHeaderView<Content: View>(height: CGFloat = 50.0, @ViewBuilder content: @escaping () -> Content) -> some View {
overlay {
NavigationHeaderView(height: height, content: content)
.frame(width: 0.0, height: 0.0)
}
@Demerro
Demerro / PagingCollectionView.swift
Last active September 9, 2024 10:17
CollectionView to track scroll progress between tabs. Built with help of @jeudesprits.
import UIKit
public final class PagingCollectionView: UICollectionView {
@_nonoverride
public let collectionViewLayout: UICollectionViewCompositionalLayout = {
let item = NSCollectionLayoutItem(layoutSize: NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0), heightDimension: .fractionalHeight(1.0)))
let group = NSCollectionLayoutGroup.vertical(layoutSize: NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0), heightDimension: .fractionalHeight(1.0)), repeatingSubitem: item, count: 1)
let section = NSCollectionLayoutSection(group: group)
let configuration = UICollectionViewCompositionalLayoutConfiguration()
@Demerro
Demerro / CollectionViewCell.swift
Last active September 10, 2024 16:33
A CollectionView containing N elements with the same distance between them
import UIKit
final class CollectionViewCell: UICollectionViewCell {
// Required
override func preferredLayoutAttributesFitting(_ layoutAttributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutAttributes {
layoutAttributes.size = systemLayoutSizeFitting(layoutAttributes.size, withHorizontalFittingPriority: .required, verticalFittingPriority: .fittingSizeLevel)
return layoutAttributes
}
}