Dynamic Island: шта је то, интерактивна обавештења iPhone

Аутор: IT Sectr Објављено: 2026-02-16 Време читања: 9 мин

Dynamic Island — интерактивна област у горњем делу iPhone 14 Pro и новијих модела, која спаја хардверски изрез камере са софтверским обавештењима у један елемент интерфејса. Dynamic Island прилагођава облик и величину према типу садржаја: позив, тајмер, музика, Live Activity, повезивање AirPods-а. Програмери комуницирају путем Dynamic Island API-ја заснованог на ActivityKit-у и WidgetKit-у. Више на Dynamic Island HIG.

Главне ствари

  • Dynamic Island — софтверско-хардверски UI елемент на iPhone 14 Pro и новијим
  • Три режима — компактни, минимални и проширени са различитим величинама садржаја
  • Live Activities — главни начин прилагођеног садржаја у Dynamic Island-у
  • Анимације — систем аутоматски управља прелазима између стања Island-а
  • Системски догађаји — позиви, AirPods, Face ID, пуњење уграђени у Dynamic Island

Шта је Dynamic Island на iPhone-у?

Dynamic Island — елемент интерфејса iPhone 14 Pro, 15 Pro и новијих модела, који користи област око предње камере и Face ID сензора за приказ обавештења и Live Activity. За разлику од старог notch изреза, који је био статични црни елемент, Dynamic Island динамички мења облик и величину: шири се за приказ тајмера, скупља се за икону повезаних AirPods-а, претвара се у правоугаоник за спортске резултате.

Техничка реализација Dynamic Island-а се заснива на хардверском изрезу (pill-shaped cutout) OLED екрана и софтверској обради пиксела око њега. Систем повећава брзину освежавања пиксела до 120 Hz у области Island-а и користи изглађивање за гладак прелаз између садржаја и црне области камере. Програмер не програмира Island директно — он креира садржај путем ActivityKit-а, а систем га аутоматски поставља око изреза.

Перцепција корисника Dynamic Island претвара хардверски недостатак у функционални елемент. Према Apple-овим истраживањима, корисници перципирају Island као природни део екрана већ након неколико дана коришћења. Позадинско осветљење и анимације привлаче пажњу — на пример, долазак обавештења помера Island и приказује садржај са ефектом ширења на 120 кадрова у секунди.

Режими приказа Dynamic Island-а

Dynamic Island подржава три режима приказа садржаја, које систем бира аутоматски на основу типа и броја активности. Програмер дефинише UI за сваки режим у WidgetBundle-у, али не управља тиме који је режим активан у датом тренутку. Систем такође може да прикаже две активности истовремено: једну лево од изреза, другу десно.

РежимВеличинаСадржајПример
Компактни~50pt ширинаИконица + кратак текстТајмер: иконица сата + «05:00»
Минимални~22pt округлиСамо иконица апликацијеОбавештење о снимку екрана
Проширени~300pt x 80ptПрилагођени SwiftUI ViewСпортски резултат са логотипима

Прелаз између режима се изводи системском анимацијом у трајању од 0.4–0.6 секунди са ease-in-out кривом. При појави нове Activity, Island се шири из компактног у проширени режим. При завршетку — скупља се назад. Корисник може принудно да смањи проширени режим превлачењем улево — Island прелази у компактни или минимални режим. Систем такође смањује проширени режим након 5 секунди неактивности, ако се не очекују ажурирања.

Две активности — ако две апликације имају активне Live Activity, Dynamic Island их приказује са обе стране изреза. Лева страна — прва покренута Activity, десна — друга. Ако постоји само једна активност, заузима леву страну, десна остаје празна. Притиском на било коју страну, Island се шири и приказује садржај те Activity. Систем сам одлучује која Activity има приоритет у случају конфликта.

Креирање садржаја за Dynamic Island

Dynamic Island садржај се креира искључиво кроз Live Activity са ActivityKit оквиром. Програмер дефинише четири области у коду: компактна лева (compactLeading), компактна десна (compactTrailing), минимална (minimal) и проширена (expanded). Свака област је SwiftUI View која прима тренутно стање Activity кроз context. Ако област није дефинисана, Island не приказује ову Activity у одговарајућем режиму.

swift
struct DeliveryIsland: DynamicIsland {
    var body: some DynamicIslandContent {
        DynamicIslandExpandedContent {
            VStack(alignment: .leading) {
                Text(context.state.status)
                    .font(.headline)
                ProgressView(
                    value: context.state.progress
                )
                Text("ETA: \(context.state.minutes) min")
                    .font(.caption)
            }
        } compactLeading: {
            Image(systemName: "box.truck")
        } compactTrailing: {
            Text("\(context.state.minutes) min")
                .monospacedDigit()
        } minimal: {
            Image(systemName: "box.truck")
        }
    }
}

Ограничења SwiftUI-ја у Dynamic Island-у — доступне компоненте: Text, Image, HStack, VStack, ZStack, Spacer, ProgressView, Button (само кроз Link), Gauge. Забрањени: ScrollView, List, TabView, анимације, gesture recognizers. Палета боја — само System Colors (label, secondaryLabel, tint). Фонтови — системске величине од .caption до .title3. Прилагођени фонтови и SF Symbols раде исправно.

Тестирање Dynamic Island-а — Xcode обезбеђује симулатор са подршком за Dynamic Island. Изаберите iPhone 14 Pro или 15 Pro као циљни уређај. ActivityKit симулира различите режиме Island-а: дугме Dynamic Island Mode у Xcode Debug менију пребацује између компактног, минималног и проширеног. За тестирање више Activity истовремено користите шеме са различитим ActivityID-јима или покрените две инстанце апликације.

Системски догађаји у Dynamic Island-у

Системски догађаји — позиви, AirPods, Face ID, пуњење и други — имају приоритет над прилагођеним Live Activity-јима. Када дође до системског догађаја, Island паузира приказ прилагођеног садржаја и приказује системски. Након завршетка системског догађаја, Island се враћа на прилагођени садржај са анимацијом. Програмер не може отказати или изменити системске догађаје — они се управљају на нивоу оперативног система iOS.

Системски догађајФормат приказаПриоритет
Долазни позивМинимална картица са именом контактаВисок
AirPodsАнимација + пуњење батеријеСредњи
Face IDИконица катанацаСредњи
ПуњењеИконица муње + процентиНизак
AirDropНапредак преносаСредњи
Снимак екранаАнимација затварачаНизак

Долазни позив — најважнији системски догађај. Dynamic Island приказује име позиваоца лево од изреза и трајање/статус десно. Током активног позива, Island не приказује ниједну прилагођену Live Activity. Корисник може проширити Island за отварање екрана позива или га смањити за наставак рада у апликацији са активним позивом у позадини.

Повезивање AirPods-а — при отварању кутије поред iPhone-а, Dynamic Island анимира повезивање и приказује напуњеност сваке слушалице и кутије. Анимација траје 2–3 секунде, након чега се Island враћа у претходно стање. Ако корисник није имао активних Live Activity, Island остаје празан. AirPods Pro 2 такође приказују јачину звука и режим поништавања буке при притиску на стабло.

Најбоље праксе развоја за Dynamic Island

Најбоље праксе Dynamic Island-а које Apple препоручује за обезбеђивање квалитетног корисничког искуства. Компактни режим треба да приказује само најважније информације — иконицу и један број или кратку ознаку. Проширени режим — само кључне информације без непотребних елемената. Избегавајте постављање текста у компактном режиму ако прелази 20 карактера — систем скраћује текст са три тачке.

Push ажурирања за Dynamic Island — користите ActivityKit push за ретка ажурирања (статус поруџбине, спортски резултати) и локална ажурирања за честе тајмере или штоперице. Push обавештења пролазе кроз APNs и потребно им је 0.5–2 секунде до приказа у Island-у. StaleDate — подесите датум застарелости садржаја: ако ажурирање не стигне на време, систем приказује сиву позадину уместо садржаја, сигнализирајући кориснику да су подаци застарели.

swift
func updateDelivery(activity: Activity<DeliveryAttributes>) {
    Task {
        let newContent = ActivityContent(
            state: DeliveryAttributes.ContentState(
                status: .delivered,
                estimatedMinutes: 0
            ),
            staleDate: Date().addingTimeInterval(300)
        )
        await activity.update(newContent)
        // Завршавамо Activity за 2 секунде
        try? await Task.sleep(nanoseconds: 2_000_000_000)
        await activity.end(newContent)
    }
}

Потрошња енергије — Dynamic Island и Live Activities минимално утичу на батерију захваљујући хардверској оптимизацији OLED екрана. Црни пиксели око изреза су искључени, а садржај се рендерује на наменском копроцесору. Просечна потрошња Live Activity-ја — мање од 1% батерије на сат коришћења при ажурирању сваких 5 минута. Систем аутоматски паузира Island при ниском нивоу батерије (испод 20%) или у режиму уштеде енергије.

Дизајн за Dynamic Island не захтева прилагођавање главног UI-ја апликације — Island ради независно од активног екрана. Боје Live Activity-ја треба да одговарају системској теми (светло/тамно) путем системских Color Assets-а. SF Symbols су пожељнији од прилагођених иконица — они гарантовано исправно раде у сваком режиму Island-а и имају уграђену подршку за Dynamic Type.

Често постављана питања

Како Dynamic Island изгледа на старијим iPhone моделима?

Dynamic Island је доступан само на iPhone 14 Pro, 14 Pro Max, 15 Pro, 15 Pro Max и новијим са iOS 16.1+. На старијим iPhone моделима са «обрвом» Dynamic Island се не приказује — Live Activity се приказује као обичан банер на екрану закључавања. Програмер не мора да пише другачији код: систем сам прилагођава интерфејс могућностима уређаја.

Могу ли се две Live Activity поставити у Dynamic Island?

Dynamic Island подржава приказ две активности истовремено — one се налазе лево и десно од изреза камере. Ако постоји само једна активност, заузима леву страну, а десна остаје у компактном стању. Притиском на било коју страну, Island се шири и приказује садржај одговарајуће Activity.

Који системски догађаји користе Dynamic Island?

Системски догађаји у Dynamic Island-у: долазни позив са минималном картицом и именом контакта, повезивање AirPods-а са анимацијом и пуњењем батерије, Face ID са иконицом катанаца, пуњење уређаја са процентом, режим модема, промена јачине звука, укључивање Silent Mode-а, AirDrop са напретком преноса и снимак екрана са анимацијом затварача.

Како додати подршку за Dynamic Island у апликацију?

Dynamic Island не захтева посебан API — он приказује Live Activity направљене кроз ActivityKit заједно са WidgetKit-ом. Апликација региструје Activity са DynamicIsland конфигурацијом, дефинише компактни, минимални и проширени SwiftUI View. Систем га аутоматски приказује у Dynamic Island-у на подржаним уређајима.

Постоје ли ограничења за садржај у Dynamic Island-у?

Dynamic Island је ограничен на три визуелна стања различитих величина: компактно до 50pt, минимално до 22pt, проширено до 300pt. У компактном режиму се не препоручује постављање текста дужег од 20 карактера. Доступне су само системске SwiftUI компоненте — Text, Image, ProgressView, Gauge. Прилагођени фонтови и боје су ограничени на системску палету.

Закључак

  • Dynamic Island — интерактивна област око изреза камере на iPhone 14 Pro и новијим
  • Три режима — компактни, минимални и проширени са системским управљањем прелазима
  • Live Activity — једини начин прилагођеног садржаја кроз ActivityKit и WidgetKit
  • Системски догађаји — позиви, AirPods, Face ID, пуњење имају приоритет над прилагођеним садржајем
  • SwiftUI ограничења — само Text, Image, ProgressView, HStack, VStack, ZStack, Gauge
  • Потрошња енергије — мање од 1% батерије на сат коришћења са ажурирањем сваких 5 минута
  • Две активности — Island приказује до две активности истовремено са обе стране изреза

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође