Skip to content

Instantly share code, notes, and snippets.

View juliensagot's full-sized avatar

Julien Sagot juliensagot

View GitHub Profile
import UIKit
import PlaygroundSupport
final class CardView: UIControl {
private let imageView = UIImageView(image: UIImage(named: "Sample"))
override init(frame: CGRect) {
super.init(frame: frame)
layer.cornerRadius = 9
@juliensagot
juliensagot / SwiftUI_subpixel_issue.swift
Last active November 16, 2024 19:18
SwiftUI subpixel alignment stroke animation issue
import SwiftUI
struct TestCard: View {
private let cornerRadius: CGFloat = 12
@Environment(\.displayScale) private var displayScale
@State private var isSelected = false
var body: some View {
@juliensagot
juliensagot / UIImage+averageColor.swift
Last active November 16, 2024 19:18
Get the average color of a UIImage. (Swift 4.2, Xcode 10.0)
import UIKit
extension UIImage {
var averageColor: UIColor? {
guard let inputImage = self.ciImage ?? CIImage(image: self) else { return nil }
guard let filter = CIFilter(name: "CIAreaAverage", parameters: [kCIInputImageKey: inputImage, kCIInputExtentKey: CIVector(extent: inputImage.extent)])
else { return nil }
guard let outputImage = filter.outputImage else { return nil }
@juliensagot
juliensagot / UIBezierPath+utils.swift
Last active September 9, 2024 04:33
Extension of UIBezierPath to create a rounded rect with different corner radius while keeping smooth corners. (Swift 4, Xcode 9.2)
import UIKit
fileprivate enum PathElement {
case moveToPoint(CGPoint)
case addLineToPoint(CGPoint)
case addQuadCurveToPoint(CGPoint, CGPoint)
case addCurveToPoint(CGPoint, CGPoint, CGPoint)
case closeSubpath
}
@juliensagot
juliensagot / UIFont+smallCaps.swift
Last active April 9, 2022 18:43
Get UIFont with smallCaps feature (Swift 5.6, Xcode 13.3)
extension UIFont {
var withSmallCaps: UIFont {
let upperCaseFeature = [
UIFontDescriptor.FeatureKey.type : kUpperCaseType,
UIFontDescriptor.FeatureKey.selector : kUpperCaseSmallCapsSelector
]
let lowerCaseFeature = [
UIFontDescriptor.FeatureKey.type : kLowerCaseType,
UIFontDescriptor.FeatureKey.selector : kLowerCaseSmallCapsSelector
@juliensagot
juliensagot / NSBezierPath+cgPath.swift
Last active September 26, 2023 23:11
Convert NSBezierPath to CGPath (Swift 5.1, Xcode 11.3 (11C29))
extension NSBezierPath {
/// A `CGPath` object representing the current `NSBezierPath`.
var cgPath: CGPath {
let path = CGMutablePath()
let points = UnsafeMutablePointer<NSPoint>.allocate(capacity: 3)
if elementCount > 0 {
var didClosePath = true