Skip to content

Instantly share code, notes, and snippets.

View YusukeHosonuma's full-sized avatar
🏠
Working from home

Yusuke Hosonuma YusukeHosonuma

🏠
Working from home
View GitHub Profile
@YusukeHosonuma
YusukeHosonuma / ContentView.swift
Created December 1, 2022 00:16
Actor / AsyncStream を使ったカウントダウン的な(とくに意味はない)
import SwiftUI
import Combine
struct ContentView: View {
@State var id: Int = 0
var body: some View {
VStack {
CounterView(from: 10).id(id)
Button("RESET") { id += 1 }
@YusukeHosonuma
YusukeHosonuma / ContentView.swift
Created June 20, 2022 22:49
VStack / HStack の `spacing` についての挙動(`Spacer` と併用した場合も)
import SwiftUI
struct ContentView: View {
var body: some View {
VStack(spacing: 20) {
Group {
// 💡 `spacing`は勝手に潰れない
HStack {
red()
blue()
@YusukeHosonuma
YusukeHosonuma / ContentView.swift
Created June 2, 2022 00:16
SwiftUI: Drag and Drop
import SwiftUI
private let url = URL(string: "https://github.com/YusukeHosonuma")!
struct ContentView: View {
@State var isTargeted = false
@State var dropedURL: URL?
var body: some View {
VStack {
@YusukeHosonuma
YusukeHosonuma / ContentView.swift
Created May 29, 2022 10:51
レベルの高い SwiftUI 面接(仮)
//
// 元ツイート:
// https://twitter.com/tobi462/status/1529687893811556354?s=20&t=LUmtHH5wXylCFqTQpfgyVg
//
// ボーナス問題:
// https://twitter.com/tobi462/status/1529727505313124353?s=20&t=LUmtHH5wXylCFqTQpfgyVg
//
struct ContentView: View {
@State var text: String = "🍎"
@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 / CanvasVsForeach.swift
Created May 23, 2022 06:49
Canvas と ForEach のパフォーマンス比較(雑)
// ref: https://tech.unifa-e.com/entry/2021/12/20/000000
struct ContentView: View {
@State var colNum = 5
@State var selection = 0
var body: some View {
Group {
if selection == 0 {
CanvasGrid(colNum: colNum)
@YusukeHosonuma
YusukeHosonuma / AttributedString.swift
Created May 22, 2022 07:12
SwiftUI 3.0: AttributedString で文字列リテラルをハイライト
import SwiftUI
import Algorithms
struct ContentView: View {
var body: some View {
Text(attributedString())
}
func attributedString() -> AttributedString {
var source = AttributedString(#"""
@YusukeHosonuma
YusukeHosonuma / GeometryAnchor.swift
Created May 19, 2022 11:47
GeometryReader と AnchorPreference で、matchedGeometry っぽいアニメーション処理。
//
// 以下の記事について matchedGeoemetry を使用せずに書いたみた的なやつ。
// https://hoshi0523.hatenablog.com/entry/2020/10/24/214520
//
// 🍊 GeometryReader version.
// 🍎 AnchorPreference version.
//
import SwiftUI
@YusukeHosonuma
YusukeHosonuma / ContentView.swift
Created May 10, 2022 03:22
SwiftUI: Group を使った場合の内部構造 → 普通の View と同じ階層構造になる
import SwiftUI
import SwiftPrettyPrint
struct ContentView: View {
var body: some View {
VStack {
Group {
Text("1")
Text("2")
}