Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Exit 8 for SwiftUI
Search
ojun
April 12, 2025
Programming
270
1
Share
Exit 8 for SwiftUI
ojun
April 12, 2025
More Decks by ojun
See All by ojun
生成 AI 時代のスナップショットテストってやつを見せてあげますよ(α版)
ojun9
0
330
アセットのコンパイルについて
ojun9
0
200
Swift Evolution かるた
ojun9
2
130
Xcode 16のPreviewModifierと@Previewableを活用した効率的なプレビュー方法の考察
ojun9
4
990
Catch Up with Swift 5.10
ojun9
2
900
Overview: Swift OpenAPI Generator
ojun9
3
2.5k
if 式と switch 式による SwiftUI のプレビューエラー対策
ojun9
1
2.2k
楽しい夏休み!String Catalogs で新しい発見
ojun9
0
2.5k
ユニットテストを学んだ次に知りたかったApple標準APIに対するテストのやり方
ojun9
1
480
Other Decks in Programming
See All in Programming
Cyrius ーLinux非依存にコンテナをネイティブ実行する専用OSー
n4mlz
0
270
Linux Kernelの1文字のミスで 権限昇格ができた話
rqda
0
2.2k
コードレビューをしない選択 #でぃーぷらすトウキョウ
kajitack
3
1.2k
Understanding Apache Lucene - More than just full-text search
spinscale
0
150
車輪の再発明をしよう!PHP で実装して学ぶ、Web サーバーの仕組みと HTTP の正体
h1r0
2
470
Ruby and LLM Ecosystem 2nd
koic
1
1.4k
安いハードウェアでVulkan
fadis
1
860
AI 開発合宿を通して得た学び
niftycorp
PRO
0
190
20260313 - Grafana & Friends Taipei #1 - Kubernetes v1.36 的開發雜記:那些困在 Alpha 加護病房太久的 Metrics
tico88612
0
240
Symfony + NelmioApiDocBundle を使った スキーマ駆動開発 / Schema Driven Development with NelmioApiDocBundle
okashoi
0
250
実践ハーネスエンジニアリング #MOSHTech
kajitack
7
5.3k
モックわからないマン卒業記 ~振る舞いを起点に見直した、フロントエンドテストにおけるモックの使いどころ~
tasukuwatanabe
3
440
Featured
See All Featured
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
170
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
My Coaching Mixtape
mlcsv
0
91
4 Signs Your Business is Dying
shpigford
187
22k
AI: The stuff that nobody shows you
jnunemaker
PRO
4
500
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.4k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
210
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.5k
How to build a perfect <img>
jonoalderson
1
5.3k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
420
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
510
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Transcript
Exit 8 for SwiftUI ojun - DeNA co., Ltd. try!
Swift Tokyo 2025 LT 2025 / 04 / 11
None
Exit 1 Prevent double taps or simultaneous taps
Exit 1 Prevent double taps or simultaneous taps Two buttons
inside a VStack
Exit 1 Prevent double taps or simultaneous taps In this
case, we need to prevent multiple buttons from being tapped simultaneously. However, SwiftUI doesn’t provide a direct API to handle mutual exclusion between buttons.
Exit 1 Prevent double taps or simultaneous taps Set isExclusiveTouch
to false on the wrapped UIView and all of its child views. If needed, implement a custom gesture recognizer to handle touch exclusivity.
None
Exit 2 Match the line height to the Text
Exit 2 Match the line height to the Text Inside
the ZStack, there's a Color and an HStack. The HStack contains a Rectangle and a titleView.
Exit 2 Match the line height to the Text This
UI is similar to what you might see in a train schedule display.
Exit 2 Match the line height to the Text This
UI is similar to what you might see in a train schedule display. However, you can see that the orange line doesn't match the height of the Text.
Exit 2 Match the line height to the Text By
creating a structure that conforms to the Layout protocol, you can align their heights.
Exit 2 Match the line height to the Text Applying
this layout to the original code allows the orange line to match the height of the Text.
None
Exit 3 Customize the loading indicator
Exit 3 Customize the loading indicator
Exit 3 Customize the loading indicator Since customization isn't possible
in SwiftUI, we need to implement it using UIKit.
None
Exit 4 Dismiss the keyboard on scroll
Exit 4 Dismiss the keyboard on scroll This behavior is
supported on iOS 16 and later. The keyboard automatically hides when the user scrolls, which simpli fi es the design.
Exit 4 Dismiss the keyboard on scroll By using scrollDismissesKeyboard,
we can implement this in a much simpler way.
Exit 5 Presenting a share sheet
Exit 5 Presenting a share sheet This code works on
iOS 16 and later. We're currently using UIActivityViewController to show the Share Sheet.
Exit 5 Presenting a share sheet By switching to ShareLink,
we can eliminate the dependency on UIKit.
Exit 6 Empty data state
Exit 6 Empty data state
Exit 6 Empty data state
Exit 7 Mesh gradient expression
Exit 7 Mesh gradient expression
Exit 7 Mesh gradient expression Starting from iOS 18, MeshGradient
makes it easy to implement mesh gradients.
None
Exit 8 Square Without GeometryReader
Exit 8 Square Without GeometryReader
Exit 8 Square Without GeometryReader It's possible to create a
square without using GeometryReader by leveraging scaledToFit.
None
None