๋ณ๋ค๋ฅธ ์ค๋ช ์์ด๋ ์ฌ์ฉ์๊ฐ ํด๋น UI๊ฐ ๋ฌด์์ ์๋ฏธํ๋์ง, ์ด๋ค ๊ธฐ๋ฅ์ ํฌํจํ๋์ง ์๊ฒ๋ ux๊ฐ ๊ณ ๋ ค ๋๋ฉด ์ข๊ฒ ์ง๋ง ์ค๋ช ์ด ํ์ํ ๊ฒฝ์ฐ๋ ์์ด์. ์ด ์ค๋ช ์ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด TipKit์ ์ฌ์ฉํด ๋ณด๋ ค๊ณ ํฉ๋๋ค. ์ฌ์ด๋ ํ๋ก์ ํธ๋ผ minimum target iOS 17๋ก ์ค์ ํด ๋๊ณ ํด๋ณด๊ณ ์ถ์๊ฑฐ ๋ค ํด๋ณด๊ณ ์์ด์ ์์ด ์ข์๋ผ
TipKit๊ณผ ๊ฐ์ ToolTip์ด ํ์ํ๋ฐ ๋ฒ์ ์ด ์๋์๋ฉด ์๋ ๊ธ์์ ํด ํ ๊ทธ๋ฆฌ๋ ๋ฐฉ๋ฒ ์ฐธ๊ณ ํด ๋ณด์ธ์!
> 2023.11.06 - [SwiftUI] - [SwiftUI] Shape path๋ก Tooltip ๊ทธ๋ฆฌ๊ธฐ
What is TipKit
Tipkit์ iOS 17 ๋ถํฐ ์ฌ์ฉํ ์ ์๋ ํ๋ ์์ํฌ๋ก ์ ํ์ด ์ ๊ณตํฉ๋๋ค. ์ฑ์์ ์ฌ์ฉ์์๊ฒ ์ค๋ช ์ด๋ ์๋ด๋ฅผ ํ์ํ๋๋ฐ ์ฌ์ฉํ ์ ์์ด์.
Tutorial
import TipKit
TipKit์ ์ฌ์ฉํ๊ธฐ ์ํด์๋TipKit ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ํฌํธ ํด์ค์ผ ํฉ๋๋ค. Tip ํ๋กํ ์ฝ์ ๋ฐ๋ฅด๋ ๊ตฌ์กฐ์ฒด๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์ ์๋ก์ด ํ์ผ ํน์ Tip ๊ตฌ์กฐ์ฒด๋ฅผ ์ ์ํ ํ์ผ์ ์ํฌํธ ํด์ฃผ์ธ์!
struct InfoTip: Tip {
var title: Text
}
๊ตฌ์กฐ์ฒด ํ๋๋ฅผ ๋ง๋ค์ด ์ค๋ค Tip ํ๋กํ ์ฝ์ ์ฑํํฉ๋๋ค.
Tip ํ๋กํ ์ฝ์ ์ ์ ์ดํด๋ณผ๊ฒ์!
@available(macOS 14.0, iOS 17.0, tvOS 17.0, watchOS 10.0, *)
public protocol Tip : Identifiable, Sendable {
var id: String { get }
var title: Text { get }
var message: Text? { get }
var image: Image? { get }
@Tips.ActionBuilder var actions: [Self.Action] { get }
@Tips.RuleBuilder var rules: [Self.Rule] { get }
@Tips.OptionsBuilder var options: [TipOption] { get }
}
Tip ํ๋กํ ์ฝ ๋ด๋ถ์๋ ํดํ์ ๊ตฌํํ๋๋ฐ ํ์ํ ์ํ๊ฐ์ ์ ์ฅํ๊ธฐ ์ํ ๋ณ์๋ค์ด ์ด๋ฏธ ์ ์๋์ด ์์ด์
struct InfoTip: Tip {
var title: Text {
Text("์ญ์ ํ๊ณ ์ถ๋ค๋ฉด ๊ธธ๊ฒ ๋๋ฌ์ฃผ์ธ์.")
}
}
ํ์๋ก title์ ๊ตฌํํด ์ค์ผ ํฉ๋๋ค.
LazyVStack(spacing: 20) {
ForEach(chatRooms, id: \.id) { chatRoom in
// ์๋ต
}
}
.padding(.bottom, 40)
.popoverTip(InfoTip()) // <- ์ฌ๊ธฐ
ํดํ์ ํํํ๊ณ ์ถ์ View์ .popoverTip modifier์ ์ฌ์ฉํด์ Tip ํ๋กํ ์ฝ์ ๋ฐ๋ฅด๋ struct๋ฅผ ์ ์ธํด ์ค๋๋ค.
์ด์ ํดํ์ ์ธ์ ๋์ฐ๊ณ ์ถ์์ง ์ ํด์ค์ผ ํด์. ๊ฐ์ฅ ์ต์์ ๋ทฐ๋ก ์ด๋ํด ์ฃผ์ธ์.
import TipKit
@main
struct to_meApp: App {
var body: some Scene {
WindowGroup {
ContentView()
.task {
try? Tips.configure([
.displayFrequency(.immediate),
.datastoreLocation(.applicationDefault)
])
}
}
}
}
๋ง์ฐฌ๊ฐ์ง๋ก TipKit์ ์ํฌํธ ํด์ฃผ์ธ์.
displayFrequency ์์ ์ด ํดํ์ ์ผ๋ง๋ ๋ ธ์ถ์ํฌ ๊ฑด์ง ์ ํ ์ ์์ต๋๋ค. ์ผ๋ง๋ ๋ ธ์ถ์ํจ๋ค๋ ๋ป์ด ๋ญ์ง๋ ์ฌ๊ธฐ ๋ค์ด ๊ฐ ์ ์๋ ๊ฐ์ ๋ณด๋ฉด ๋ฐ๋ก ๊ฐ์ด ์ฌ๊ฑฐ์์!
์ด ํดํ์ ๋งค์ผ ๋์ธ๊ฑด์ง, ๋งค ์๊ฐ๋ง๋ค ๋์ธ ๊ฑด์ง, ์๋๋ฉด ํ์ ์ ํ ์์ด ๋์ธ๊ฑด์ง ์ ํ ์ ์์ด์!
์คํํ๋ฉด ํด๋น ์์ญ์ ํดํ์ด ๋จ๊ฒ ๋ฉ๋๋ค.
'iOS ๐ > Library' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SwiftUI/VisionKit] CSํ์ ๋์๋๋ฆฌ์! ์๋ฅ ์ค์บ๊ณผ ์ด๋ฏธ์ง ๊ธ์ ์ธ์ (0) | 2023.11.16 |
---|---|
[SwiftData] Query and Filtering Data (0) | 2023.10.24 |