Skip to content

Instantly share code, notes, and snippets.

View Koshimizu-Takehito's full-sized avatar
🏝️

takehito Koshimizu-Takehito

🏝️
View GitHub Profile
@jrsaruo
jrsaruo / HorizontalInlinePicker.swift
Last active February 24, 2025 06:31
Horizontal Inline Picker by SwiftUI
import SwiftUI
// https://x.com/jrsaruo_tech/status/1893585977760743750
@available(iOS 18, *)
struct HorizontalInlinePicker<SelectionValue, Content>: View where SelectionValue: Hashable, Content: View {
@Binding var selection: SelectionValue
@State private var centerValue: SelectionValue?
import SwiftUI
struct EnumPicker<Enum>: View where Enum: CaseIterable & Hashable, Enum.AllCases: RandomAccessCollection {
typealias Element = Enum.AllCases.Element
private var enumType: Enum.Type
@Binding private var selection: Element
init(_ enumType: Enum.Type, selection: Binding<Element>) {
self.enumType = enumType
@yosshi4486
yosshi4486 / Polygon.swift
Created February 17, 2024 08:45
Polygon shape considered a corner radius.
/// 多角形のシェープ.
struct Polygon : Shape {
/// 多角形の頂点の数. デフォルト値は`3`
var numberOfVertex: Int
/// 角の半径. デフォルト値は`3`.
var cornerRadius: CGFloat
/// 直線をトップに配置するかどうかのBool値. デフォルト値は`false`.
@realvjy
realvjy / ChoasLinesShader.metal
Last active April 16, 2025 00:45
Choas Lines - Metal Shader
// Lines
float hash( float n ) {
return fract(sin(n)*753.5453123);
}
// Slight modification of iq's noise function.
float noise(vector_float2 x )
{
vector_float2 p = floor(x);
vector_float2 f = fract(x);
@renyello
renyello / HuggingFaceProgressCircle.swift
Last active July 19, 2023 13:37
HuggingFaceのLoading画面に表示されるアニメーションを再現しました。カラーは青:#3498DB 黄色:#F1C40F 赤:#E74C3C を使用してます。
import SwiftUI
struct HugginFaceProgressCircle: View {
@State private var rotationDegrees: [Double] = [0, 0, 0]
@State private var startTrim: [CGFloat] = [0, 0, 0]
@State private var trimTo: CGFloat = 120.0 / 360.0
@State private var shouldRotate = true
@State private var opacity = 1.0
let timer = Timer.publish(every: 0.1, on: .main, in: .common).autoconnect()
@YusukeHosonuma
YusukeHosonuma / ContentView.swift
Created May 29, 2022 05:34
Canvas で Apple ロゴっぽいレインボーなレンダリングをするやつ + TimelineView でアニメーション
import SwiftUI
struct ContentView: View {
@State private var tick: Int = 0
@State private var opacity: Double = 0
@State private var inverse = true
var body: some View {
TimelineView(.animation) { timeline in
content(timeline.date)
@YusukeHosonuma
YusukeHosonuma / ContentView.swift
Created May 28, 2022 15:48
Canvas で Apple ロゴっぽいレインボーなレンダリングをするやつ。
// 🌱 Inspired by and special thanks!
// https://gist.github.com/Koshimizu-Takehito/737381f5e55678e691205fe11fe16e93
import SwiftUI
struct ContentView: View {
var body: some View {
HStack(spacing: 12) {
ForEach(["applelogo", "swift"], id: \.self) { name in
VStack(spacing: 12) {
@YusukeHosonuma
YusukeHosonuma / The introduction to SwiftUI.md
Last active March 22, 2025 09:20
あなたが求めていた SwiftUI 入門(未完結)

昔に書いていた未完結の記事ですが、それでも宜しければどうぞです🙏

あなたが求めていた SwiftUI 入門(未完結)

あなたは今年こそ SwiftUI を学ぶ必要があると感じている。

それは今年の WWDC20 で発表された Widget と呼ばれる機能が SwiftUI でしか作成できないことを聞いたからかもしれないし、SwiftUI 100% でマルチプラットフォームのアプリを作成できるようになったからかもしれないし、あるいはいつまでも UIKit に依存しているのはリスクだと感じ取ったのかもしれない。

学習の上で一番難しい部分は、SwiftUI で考えるということだ。従来の命令的でステートフルなプログラミングから離れて、宣言的でステートレスに考えるように脳を強制しなくてはならない。すでに日本でも SwiftUI の書籍はいくつか発売されているが、その多くは使い方に関することが中心で、SwiftUI が**どのように動くのか(How it works)**についての解説は不足しているものが多いように感じる。