Skip to content

Instantly share code, notes, and snippets.

View sebjvidal's full-sized avatar

Seb Vidal sebjvidal

View GitHub Profile
@sebjvidal
sebjvidal / ViewController.swift
Created November 4, 2025 09:21
UIGlassContainerEffect-Demo
//
// ViewController.swift
// UIGlassContainerEffect-Demo
//
// Created by Seb Vidal on 04/11/2025.
//
import UIKit
import MapKit
@sebjvidal
sebjvidal / NSView+RenderWithCARenderer.swift
Created January 24, 2026 13:24
NSView CARenderer Demo
extension NSView {
func renderWithCARenderer() -> NSImage? {
let width = Int(frame.width * 2)
let height = Int(frame.height * 2)
frame.origin = CGPoint(x: 0, y: 0)
let descriptor = MTLTextureDescriptor.texture2DDescriptor(pixelFormat: .rgba8Unorm, width: width, height: height, mipmapped: true)
descriptor.usage = [.shaderRead, .shaderWrite, .renderTarget]
let device = MTLCreateSystemDefaultDevice()!
@sebjvidal
sebjvidal / UIImage+BarButtonImage.swift
Created February 19, 2026 10:42
UIBarButtonItem Image and Title
import UIKit
extension UIImage {
static func barButtonImage(title titleText: String, showsBadge: Bool) -> UIImage {
let badgeView = UIImageView()
badgeView.image = .badge
badgeView.isHidden = showsBadge == false
badgeView.preferredSymbolConfiguration = UIImage.SymbolConfiguration(textStyle: .footnote)
let titleTextLabel = UILabel()
@sebjvidal
sebjvidal / ViewController.swift
Created April 19, 2026 21:32
Collection View Layout Margins Demo
private func setupCollectionView() {
let layout = UICollectionViewCompositionalLayout { [unowned self] section, environment in
let spacing: CGFloat = 8
let numberOfColumns: CGFloat = 5
let numberOfSpacers: CGFloat = numberOfColumns - 1
let contentWidth = collectionView.layoutMarginsGuide.layoutFrame.width
let itemWidth = (contentWidth - numberOfSpacers * spacing) / numberOfColumns
let layoutItemSize = NSCollectionLayoutSize(widthDimension: .absolute(itemWidth), heightDimension: .fractionalHeight(1))