Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
folium-app
GitHub Repository: folium-app/Folium
Path: blob/a-new-beginning/Folium-iOS/Classes/Cells/BlurredCollectionViewCell.swift
2 views
//
//  BlurredCollectionViewCell.swift
//  Folium-iOS
//
//  Created by Jarrod Norwell on 13/7/2025.
//

import UIKit

class BlurredCollectionViewCell : UICollectionViewCell {
    var visualEffectView: UIVisualEffectView!
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        
        visualEffectView = .init(effect: UIVibrancyEffect(blurEffect: UIBlurEffect(style: .systemMaterialLight)))
        visualEffectView.translatesAutoresizingMaskIntoConstraints = false
        insertSubview(visualEffectView, belowSubview: self)
        
        visualEffectView.topAnchor.constraint(equalTo: safeAreaLayoutGuide.topAnchor).isActive = true
        visualEffectView.leadingAnchor.constraint(equalTo: safeAreaLayoutGuide.leadingAnchor).isActive = true
        visualEffectView.bottomAnchor.constraint(equalTo: safeAreaLayoutGuide.bottomAnchor).isActive = true
        visualEffectView.trailingAnchor.constraint(equalTo: safeAreaLayoutGuide.trailingAnchor).isActive = true
        
        let realVisualEffectView: UIVisualEffectView = .init(effect: UIBlurEffect(style: .systemMaterialLight))
        realVisualEffectView.translatesAutoresizingMaskIntoConstraints = false
        insertSubview(realVisualEffectView, belowSubview: visualEffectView)
        
        realVisualEffectView.topAnchor.constraint(equalTo: safeAreaLayoutGuide.topAnchor).isActive = true
        realVisualEffectView.leadingAnchor.constraint(equalTo: safeAreaLayoutGuide.leadingAnchor).isActive = true
        realVisualEffectView.bottomAnchor.constraint(equalTo: safeAreaLayoutGuide.bottomAnchor).isActive = true
        realVisualEffectView.trailingAnchor.constraint(equalTo: safeAreaLayoutGuide.trailingAnchor).isActive = true
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

class BlurredIntermediateCollectionViewCell : UICollectionViewCell {
    var visualEffectView: UIVisualEffectView!
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        
        let effect: UIVisualEffect = if #available(iOS 26, *) {
            UIGlassEffect(style: .regular)
        } else {
            UIVibrancyEffect(blurEffect: UIBlurEffect(style: .systemThinMaterial))
        }
        
        visualEffectView = .init(effect: effect)
        visualEffectView.translatesAutoresizingMaskIntoConstraints = false
        insertSubview(visualEffectView, belowSubview: self)
        
        visualEffectView.topAnchor.constraint(equalTo: safeAreaLayoutGuide.topAnchor).isActive = true
        visualEffectView.leadingAnchor.constraint(equalTo: safeAreaLayoutGuide.leadingAnchor).isActive = true
        visualEffectView.bottomAnchor.constraint(equalTo: safeAreaLayoutGuide.bottomAnchor).isActive = true
        visualEffectView.trailingAnchor.constraint(equalTo: safeAreaLayoutGuide.trailingAnchor).isActive = true
        
        if #unavailable(iOS 26) {
            let realVisualEffectView: UIVisualEffectView = .init(effect: UIBlurEffect(style: .systemMaterialLight))
            realVisualEffectView.translatesAutoresizingMaskIntoConstraints = false
            insertSubview(realVisualEffectView, belowSubview: visualEffectView)
            
            realVisualEffectView.topAnchor.constraint(equalTo: safeAreaLayoutGuide.topAnchor).isActive = true
            realVisualEffectView.leadingAnchor.constraint(equalTo: safeAreaLayoutGuide.leadingAnchor).isActive = true
            realVisualEffectView.bottomAnchor.constraint(equalTo: safeAreaLayoutGuide.bottomAnchor).isActive = true
            realVisualEffectView.trailingAnchor.constraint(equalTo: safeAreaLayoutGuide.trailingAnchor).isActive = true
        }
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}