Photo Editing Extension: vad det är, funktioner för iOS-tillägget

Författare: IT Sectr Publicerad: 2026-06-15 Lästid: 9 min

Photo Editing Extension — är en iOS-mekanism som gör det möjligt för tredjepartsappar att lägga till redigeringsverktyg direkt i systemappen Foton. Till skillnad från fullfjädrade redigerare laddar inte tillägget upp bilden i en separat app — användaren tillämpar filter, korrigerar färger eller lägger till effekter utan att lämna standardgränssnittet. Enligt Apple Developer Documentation (2025) tillhandahåller PhotoKit över 40 API:er för att arbeta med fotoresurser, inklusive PHAdjustmentData och PHContentEditingController.

Huvudpunkter

  • Photo Editing Extension bäddar in redigeringsverktyg i standardappen Foton på iOS utan att växla mellan program
  • Arkitekturen bygger på protokollet PHContentEditingController, som hanterar visning av gränssnittet och hämtning av originalbilden
  • Tillägget använder icke-förstörande redigering — alla ändringar sparas som AdjustmentData och originalbilden förblir orörd
  • För att arbeta med bilden får tillägget PHContentEditingInput med den fullständiga filen och metadata
  • PhotoKit ger tillgång till fotoresurser via PHAsset, PHAssetResource och PHImageManager

Vad är Photo Editing Extension i iOS

Photo Editing Extension — är en typ av apptillägg i iOS som introducerar bildbehandlingsverktyg i standardgränssnittet för appen Foton. Användaren öppnar en bild, trycker på knappen ”Redigera” och väljer önskat tillägg från listan över installerade. Efter redigering sparas resultatet tillbaka i biblioteket och originalfilen förblir tillgänglig för återställning.

Denna arkitektur löser ett nyckelproblem med användarupplevelsen: man behöver inte växla mellan appar, exportera och importera bilder eller hålla reda på versioner. Enligt WWDC 2025 arbetar alla tillägg i en isolerad process med egen sandlåda och begränsad exekveringstid — upp till 30 sekunder per redigeringsoperation.

Tillägget har inte åtkomst till godtyckliga filer i enhetens minne — endast till den bild som användaren uttryckligen överfört via urvalsgränssnittet. Detta garanterar säkerheten för användardata vid användning av tredjepartsverktyg.

PhotoKit: arkitektur och nyckelkomponenter

PhotoKit — är Apples ramverk för att arbeta med enhetens mediebibliotek, som introducerades i iOS 8. Det ger programmeringsåtkomst till Fotons resurser, inklusive bilder, videor, album och metadata. För redigeringstillägg fungerar PhotoKit som ett mellanlager mellan lagring och modifieringsgränssnitt.

PHAsset och PHAssetResource

PHAsset representerar ett enskilt mediaobjekt i biblioteket — en bild eller video. Via PHAsset kan man få metadata: inspelningsdatum, filtyp, plats på kartan och kameraorientering. PHAssetResource ger tillgång till grundläggande resurser — till exempel originalfilen i RAW- eller HEIC-format.

För redigeringstillägget är PHContentEditingInput kritisk — ett objekt som innehåller den kompletta bildfilen (eller videon) tillgänglig för läsning och bearbetning. Tillägget får detta objekt vid aktiveringstillfället och använder det som källmaterial.

PHImageManager och cachning

PHImageManager hanterar inläsning och cachning av bilder. För redigeringstillägget används det inte direkt — tillägget får den kompletta filen via PHContentEditingInput. PHImageRequestOptions gör det dock möjligt att konfigurera begäransparametrar: storlek, leveranstyp (synkron eller asynkron) och resultatformat.

Enligt Apple cachar PHImageManager automatiskt bildminiatyrer i RAM-minnet, vilket påskyndar återvisning av förhandsgranskningar. För redigeringstillägget rekommenderas att använda PHImageRequestOptionsDeliveryModeHighQualityFormat för att få bästa bildkvalitet.

swift
let options = PHImageRequestOptions()
options.deliveryMode = .highQualityFormat
options.isSynchronous = true

PHImageManager.default().requestImage(
    for: asset,
    targetSize: .init(width: 1024, height: 1024),
    contentMode: .aspectFill,
    options: options
) { image, _ in
    // använd bild för visning
}

Skapa tillägget: PHContentEditingController

Varje Photo Editing Extension implementerar protokollet PHContentEditingController — tilläggets centrala kontroll-element. Protokollet definierar metoder för att visa gränssnittet, hämta indata och spara resultatet.

Protokollets huvudmetoder

beginContentEditing(with:) anropas vid start av en redigeringssession. Tillägget får PHContentEditingInput och måste visa gränssnittet med originalbilden. finishContentEditing(completionHandler:) avslutar redigeringen — tillägget returnerar PHContentEditingOutput med den modifierade filen och AdjustmentData. cancelContentEditing() avbryter ändringarna utan att spara.

En viktig nyans: vid anrop av beginContentEditing har tillägget endast åtkomst till en version av bilden — den som användaren begärt. Man kan inte komma åt en annan bild eller ett album. Detta är en sandlådebegränsning införd av Apple för säkerhet.

swift
class PhotoEditingViewController: UIViewController {

    override func beginContentEditing(
        with input: PHContentEditingInput
    ) {
        guard let url = input.fullSizeImageURL else { return }
        let image = CIImage(contentsOf: url)
        displayImage.image = UIImage(ciImage: image)
    }
}

Separationsarkitektur

PHContentEditingController separerar redigeringsgränssnittet från sparlogiken. Huvudprocessen i iOS anropar beginContentEditing, tillägget visar sitt UI, användaren gör ändringar, sedan genererar finishContentEditing en ny fil. Apple rekommenderar att all resurskrävande bearbetning — CIFilter-filter, Core Image-manipulationer — utförs i bakgrundstrådar, inte i huvudtråden, för att inte blockera gränssnittet.

Icke-förstörande redigering via AdjustmentData

PHAdjustmentData — nyckelmekanismen som möjliggör icke-förstörande redigering i Photo Editing Extension. Det är ett objekt som innehåller information om tillämpade ändringar i godtyckligt format. Tillägget serialiserar filterparametrar, masker och inställningar i AdjustmentData och sparar dem tillsammans med den modifierade bilden.

När bilden öppnas igen läser tillägget AdjustmentData, återställer föregående gränssnittstillstånd och låter användaren fortsätta redigeringen från samma ställe. Om tillägget inte är installerat — visas bilden i den senast sparade versionen och originalfilen lagras separat.

Enligt Apple Documentation lagrar PHAdjustmentData formatIdentifier och formatVersion — strängar för identifiering av dataformatet. Vid uppdatering av tillägget bör versionen kontrolleras och gamla format hanteras korrekt.

swift
let adjustmentData = PHAdjustmentData(
    formatIdentifier: "com.example.photoediting",
    formatVersion: "1.0",
    data: NSKeyedArchiver.archivedData(
        withRootObject: params,
        requiringSecureCoding: true
    )
)
output.adjustmentData = adjustmentData

Vid finishContentEditing skriver tillägget AdjustmentData till PHContentEditingOutput-objektet tillsammans med den modifierade bildfilen. Systemet sparar sedan båda komponenterna: versionen för visning och metadata för återställning av redigeringssessionen.

Integration med appen Foton

Photo Editing Extension visas automatiskt i menyn för appen Foton efter installation av appen som innehåller det. Användaren öppnar en bild, väljer ”Redigera” och i den nedre verktygsraden visas alla installerade redigeringstillägg — både systemets och tredjeparts.

Registrering av tillägget

Tillägget registreras via huvudappens Info.plist med nyckeln NSExtensionActivationRule, som anger vilka innehållstyper som aktiverar tillägget. För en bildredigerare kräver ActivationRule vanligtvis image — tillägget visas inte för videor eller livebilder.

Apple rekommenderar att specificera konkreta aktiveringstyper för att inte överbelasta redigeringsmenyn. Om tillägget endast stöder JPEG och HEIC är det värt att begränsa aktiveringen till dessa format.

xml
<!-- Info.plist -->
<key>NSExtension</key>
<dict>
    <key>NSExtensionPointIdentifier</key>
    <string>com.apple.photo-editing</string>
    <key>NSExtensionActivationRule</key>
    <string>SUBQUERY (extensionItems,
        @count <= 1)</string>
</dict>

Interaktion med användaren

Efter val av tillägg skapar iOS en separat process med en anpassad UIViewController som visas ovanför Fotons gränssnitt. Användaren ser sin bild, tilläggets verktyg och knapparna ”Avbryt” / ”Klar”. Tillägget kan inte ändra navigeringen utanför sin kontroller eller få åtkomst till andra delar av systemet.

Enligt Apples Human Interface Guidelines bör tilläggets gränssnitt vara minimalt och funktionellt — utan reklam, externa länkar och onödiga navigeringselement. Det rekommenderas att använda UIScrollView för att visa verktygspaletten för att inte belasta skärmen.

Vanliga frågor

Hur får Photo Editing Extension åtkomst till bilden?

Tillägget får PHContentEditingInput med URL:en till den fullständiga bildfilen via metoden beginContentEditing(with:). Åtkomst ges endast till en vald bild — utan rättigheter till andra resurser i biblioteket.

Kan tillägget ändra originalbilden?

Nej, originalet ändras aldrig. Tillägget skapar en ny version via PHContentEditingOutput och AdjustmentData lagrar ändringsparametrarna för möjlighet att återgå till ursprungligt tillstånd.

Vilka filtyper stöder Photo Editing Extension?

Tillägget fungerar med alla format som PhotoKit stöder: JPEG, HEIC, RAW, PNG, TIFF och Live Photos. Begränsningar ställs in via NSExtensionActivationRule i tilläggets Info.plist.

Hur mycket tid ges för redigering?

iOS tilldelar upp till 30 sekunder för att utföra finishContentEditing-operationen. Vid överskridande av gränsen avslutas tillägget tvångsmässigt och ändringarna sparas inte. Bakgrundsbearbetning med CIFilter förlänger inte denna tid.

Kan Core Image och Metal användas i tillägget?

Ja, Core Image (CIFilter) och Metal (för anpassade shaders) stöds fullt ut. Apple rekommenderar att flytta tunga beräkningar till bakgrundstrådar via Grand Central Dispatch.

Sammanfattning

  • Photo Editing Extension — är ett inbäddat redigeringsverktyg i appen Foton som fungerar utan att växla mellan appar
  • Arkitekturen använder PHContentEditingController för att hantera redigeringssessionen och hämta indata
  • PhotoKit tillhandahåller PHAsset, PHImageManager och PHContentEditingInput för åtkomst till enhetens mediaresurser
  • PHAdjustmentData säkerställer icke-förstörande redigering — serialisering av ändringsparametrar med återställningsmöjlighet
  • Tillägget fungerar i en sandlåda med en gräns på 30 sekunder och åtkomst till endast en bild per session
  • Core Image, Metal och alla PhotoKit-format stöds: JPEG, HEIC, RAW, PNG, TIFF och Live Photos

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet

Läs också