- Published on
ShareLink va Transferable β ma'lumot ulashish
- Authors
- Name
- ShoxruxC
- @iOSdasturchi
ShareLink (iOS 16+) β SwiftUI ning tizim share sheet ni ochish uchun komponenti. Matn, rasm, URL yoki istalgan Transferable ob'ektni ulashish mumkin. Foydalanuvchi AirDrop, Messages, Mail, ijtimoiy tarmoqlar orqali kontentni yuborishi mumkin.
Transferable β drag-drop, copy-paste va ulashish uchun protokol. String, URL, Data kabi standart turlar allaqachon Transferable. O'z turlaringiz uchun Transferable ga moslashtirish mumkin β bu ilovangiz kontentini boshqa ilovalar bilan almashish imkonini beradi.
ShareLink β ulashish
// βββββββββββββββββββββββββββββββββββββββ
// MATN ULASHISH
// βββββββββββββββββββββββββββββββββββββββ
ShareLink(item: "SwiftUI juda ajoyib framework!")
// Maxsus ko'rinish
ShareLink(item: "SwiftUI o'rganmoqdaman") {
Label("Ulashish", systemImage: "square.and.arrow.up")
}
// URL ulashish
ShareLink(item: URL(string: "https://swiftui.uz")!) {
Label("Saytni ulashish", systemImage: "link")
}
// Subject va message bilan
ShareLink(
item: URL(string: "https://swiftui.uz")!,
subject: Text("SwiftUI o'rganish"),
message: Text("Bu saytda SwiftUI darslar bor!")
) {
Image(systemName: "square.and.arrow.up.circle.fill")
.font(.title)
}
// Preview bilan
ShareLink(
item: URL(string: "https://swiftui.uz")!,
preview: SharePreview(
"SwiftUI.uz β iOS darslar",
image: Image(systemName: "swift")
)
) {
Label("Ulashish", systemImage: "square.and.arrow.up")
}
Transferable β custom tur
// βββββββββββββββββββββββββββββββββββββββ
// O'Z TURINGIZNI TRANSFERABLE QILISH
// βββββββββββββββββββββββββββββββββββββββ
struct Maqola: Codable, Transferable {
let sarlavha: String
let mazmun: String
let muallif: String
// Qanday formatda uzatilishini aniqlash
static var transferRepresentation: some TransferRepresentation {
// JSON sifatida β boshqa ilovalar uchun
CodableRepresentation(contentType: .json)
// Matn sifatida β oddiy nusxa olish uchun
ProxyRepresentation(exporting: \.sarlavha)
}
}
// ShareLink da ishlatish
let maqola = Maqola(
sarlavha: "SwiftUI asoslari",
mazmun: "Bu maqolada...",
muallif: "Ali"
)
ShareLink(
item: maqola,
preview: SharePreview(maqola.sarlavha)
)
Drag and Drop
struct DragDropMisol: View {
@State private var chap: [String] = ["Olma", "Banan", "Gilos"]
@State private var ong: [String] = []
var body: some View {
HStack(spacing: 20) {
// Chap ro'yxat β drag qilish
VStack {
Text("Mevalar").font(.headline)
ForEach(chap, id: \.self) { meva in
Text(meva)
.padding()
.background(.blue.opacity(0.2))
.clipShape(RoundedRectangle(cornerRadius: 8))
.draggable(meva) // Drag qilish mumkin
}
}
// O'ng ro'yxat β drop qilish
VStack {
Text("Savat").font(.headline)
ForEach(ong, id: \.self) { meva in
Text(meva).padding()
}
}
.frame(minWidth: 100, minHeight: 200)
.background(.gray.opacity(0.1))
.clipShape(RoundedRectangle(cornerRadius: 12))
.dropDestination(for: String.self) { elementlar, _ in
ong.append(contentsOf: elementlar)
return true
}
}
.padding()
}
}
π― Topshiriq
Kontakt struct yarating (ism, telefon, email) β Transferable qilib, ShareLink da ulashish. Drag-drop bilan kontaktlarni sevimlilar ro'yxatiga ko'chirish. SharePreview da kontakt ismini ko'rsating.