Skip to content

Instantly share code, notes, and snippets.

@AdamWhitcroft
AdamWhitcroft / SotraitPrivacyPolicy.md
Created October 8, 2026 05:50
SortraitPrivacyPolicy.md

Last updated: October 7, 2026

Sortrait is a free app made by Adam Whitcroft. It helps you organize your Photos library, with sorting handled locally on your device.

We do not receive your photos, videos, or sorting history. Sortrait does not use advertising networks, analytics tools, or AI services, and we do not sell your personal information.

Access to your Photos library

With your permission, Sortrait accesses photos, videos, and related information, such as their dates, to display and sort your library.

_Last updated: Nov 13, 2024_
Vellum was built with privacy in mind. We do not track you, sell personal data or embed ad networks in the app.
### Consent
By using Vellum, you hereby consent to our Privacy Policy and agree to its terms.
### Collected data
@AdamWhitcroft
AdamWhitcroft / SheetBackgroundColor.swift
Created June 27, 2024 00:01
Custom sheet background color
struct Home: View {
@State private var isShowingSheet: Bool = false
// MARK: - Body
var body: some View {
Text("Custom sheet background")
.onTapGesture {
isShowingSheet.toggle()

Last updated: June 17, 2024

Clipbud was built with privacy in mind. Your snippets are stored locally on your device. If you have iCloud Sync enabled, your snippets will be synced to your iCloud account. You are the only person who can access this data. We do not track you, sell personal data or embed ad networks in the app.

Consent

By using Clipbud, you hereby consent to our Privacy Policy and agree to its terms.

Collected data

import SwiftUI
import UIKit
struct EditorView<AccessoryShelf: View>: UIViewRepresentable {
// MARK: - Properties
var placeholderText: String
// MARK: - Binding
@AdamWhitcroft
AdamWhitcroft / TwodosPrivacyPolicy.md
Created February 21, 2024 17:45
Twodos Privacy Policy

Last updated: February 21, 2024

Twodos was built with privacy in mind. Your todos are stored locally on your device. If you have iCloud Sync enabled, your todos will be synced to your iCloud account. You are the only person who can access this data. We do not track you, sell personal data or embed ad networks in the app.

Consent

By using Twodos, you hereby consent to our Privacy Policy and agree to its terms.

Collected data

@AdamWhitcroft
AdamWhitcroft / WrappedUITextField.swift
Last active January 24, 2024 14:22
WrappedUITextField
import SwiftUI
import UIKit
/*
This is how I've used UIViewRepresentable for wrapping a UITextField
for the Search input of my app Daypage.
Usage:
SearchInputView(
import SwiftUI
struct ChatGPTTextField: View {
// MARK: - State
/// State to hold our `TextField` query.
@State private var queryMessage: String = ""
/// Focus state for our `TextField`.
//
// Thanks for offering to help! This is where I'm at now.
// It's an incredibly simple scene, but I'm just starting to
// poke around with Scenekit.
//
// The TL;DR of what I'm trying to do is:
// Having a moon in the middle of the view
// User CAN rotate moon (currently working)
// User CANNOT pinch to zoom (currently working)
// User CANNOT reposition the moon within the view (currently NOT WORKING)
struct Overlay: View {
@State private var showLive = true
@State private var isAnimationSlowed = false
var body: some View {
VStack {
Spacer()
HStack {
Spacer()