TimelineView ja Canvas suorituskykyiseen piirtämiseen
Reaaliaikaisten animaatioiden renderöinti TimelineView-aikatauluilla ja Canvas-APIlla.
TimelineView ja Canvas suorituskykyiseen piirtämiseen on ilmainen Swift Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Swift Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Swift Academy-kurssilla on yhteensä 4 oppituntia.
TimelineView-yleiskatsaus
TimelineView piirtää sisältönsä uudelleen aikataulun mukaisesti, mikä mahdollistaa reaaliaikaiset animaatiot ilman ajastimia.
TimelineView(.animation) { timeline in
Text(timeline.date.formatted(date: .omitted, time: .standard))
}TimelineSchedule-tyypit
Sisäänrakennetut aikataulut ovat .animation (jokainen kehys), .periodic (kiinteä aikaväli) ja .explicit (tietyt ajankohdat).
TimelineView(.periodic(from: .now, by: 1.0)) { context in
ClockFace(date: context.date)
}Canvas-yleiskatsaus
Canvas tarjoaa 2D-piirtokontekstin suorituskykyiseen immediate mode -grafiikkaan Core Graphicsin tapaan.
Canvas { ctx, size in
ctx.fill(
Path(ellipseIn: CGRect(origin: .zero, size: size)),
with: .color(.blue)
)
}Muotojen piirtäminen Canvasissa
Käyttäkää GraphicsContext-metodeja, kuten fill, stroke ja draw, polkujen ja kuvien piirtämiseen.
Canvas { ctx, size in
var path = Path()
path.move(to: .zero)
path.addLine(to: CGPoint(x: size.width, y: size.height))
ctx.stroke(path, with: .color(.red), lineWidth: 2)
}TimelineView- ja Canvas-komponenttien yhdistäminen
Sijoittakaa Canvas TimelineView-komponentin sisään, jotta voitte animoida kuva kuvalta ilman SwiftUI:n tilapäivityksiä.
TimelineView(.animation) { timeline in
Canvas { ctx, size in
let t = timeline.date.timeIntervalSinceReferenceDate
let x = size.width * (0.5 + 0.4 * cos(t))
let y = size.height * (0.5 + 0.4 * sin(t))
ctx.fill(Path(ellipseIn: CGRect(x: x-10, y: y-10, width: 20, height: 20)), with: .color(.orange))
}
}Symbolien ratkaiseminen
Kutsukaa ctx.resolve()-metodia SwiftUI-näkymien, kuten Imagen, muuttamiseksi Canvasissa piirrettäviksi symboleiksi.
Canvas { ctx, size in
let symbol = ctx.resolveSymbol(id: "star")!
ctx.draw(symbol, at: CGPoint(x: 50, y: 50))
} symbols: {
Image(systemName: "star.fill").tag("star")
}Teksti ja Attributed String -merkkijonot Canvasissa
Piirtäkää tekstiä käyttämällä ctx.draw(Text(...), at:)-kutsua mukautettujen nimikkeiden piirtämiseen Canvasin sisällä.
Canvas { ctx, size in
ctx.draw(
Text("Score: 100").font(.title).foregroundStyle(.white),
at: CGPoint(x: size.width/2, y: 30)
)
}Muunnokset ja leikkaus
Käyttäkää grafiikkakontekstissa affiineja muunnoksia ja leikkauspolkuja monimutkaisten tehosteiden luomiseen.
Canvas { ctx, size in
ctx.translateBy(x: size.width/2, y: size.height/2)
ctx.rotate(by: .degrees(45))
ctx.fill(Path(CGRect(x: -50, y: -50, width: 100, height: 100)), with: .color(.purple))
}Suorituskyky verrattuna SwiftUI-näkymiin
Canvas piirtää kaiken grafiikan yhdellä piirto-operaatiolla — se sopii erinomaisesti hiukkasjärjestelmiin ja monimutkaisiin kaavioihin, joissa tuhannet näkymät olisivat liian hitaita.
// Benchmark: 500 moving dots
// Canvas: ~120fps on iPhone
// SwiftUI views: ~30fps due to view tree overheadCanvasin saavutettavuus
VoiceOver ei näe Canvasin sisältöä. Lisätkää saavutettavuusnimikkeet accessibilityChildren-muuntimen avulla.
Canvas { ctx, size in
// draw chart bars
}
.accessibilityChildren {
ForEach(bars) { Text("\($0.label): \($0.value)") }
}TimelineView-komponentin cadence
Konteksti tarjoaa cadence-vihjeen (live, sekunnit, minuutit), jonka avulla voitte vähentää yksityiskohtia järjestelmän kuormittuessa.
TimelineView(.animation) { ctx in
if ctx.cadence == .live {
HighDetailAnimation(date: ctx.date)
} else {
LowDetailAnimation(date: ctx.date)
}
}Pikatarkistus
Mikä TimelineSchedule aiheuttaa TimelineView-komponentin piirtämisen uudelleen jokaisella animaatiokehyksellä?
Oppitunnin kertaus
TimelineView piirtää sisällön uudelleen aikataulun mukaisesti (jokaisella kehyksellä, kun käytössä on .animation). Canvas tarjoaa immediate mode -tyyppisen 2D-piirtokontekstin. Yhdistämällä ne voitte toteuttaa suorituskykyisiä hiukkastehosteita, pelejä ja reaaliaikaisia kaavioita ilman SwiftUI-näkymien jokaisen kehyksen aikaista erotuslaskennan kuormaa.
Opi Swift tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 122
- Oppitunnit
- 409
Usein kysytyt kysymykset
Onko oppitunti ”TimelineView ja Canvas suorituskykyiseen piirtämiseen” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Swift Academy-oppimispolun 3 oppituntia, myös oppitunnin “TimelineView ja Canvas suorituskykyiseen piirtämiseen”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Swift Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”TimelineView ja Canvas suorituskykyiseen piirtämiseen”?
Reaaliaikaisten animaatioiden renderöinti TimelineView-aikatauluilla ja Canvas-APIlla. Harjoittelet Swift Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Swift Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Swift Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”TimelineView ja Canvas suorituskykyiseen piirtämiseen”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Swift Academy-oppitunnilla?
Kyllä. Jokainen Swift Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Implisiittiset ja eksplisiittiset animaatiot
- matchedGeometryEffect ja näyttävät siirtymät
- Mukautettu AnimatableModifier ja Animatable
- TimelineView ja Canvas suorituskykyiseen piirtämiseen