Texte unkenntlich machen mit redacted in SwiftUI


Mit der Beta 3 von Xcode 12 wurde SwiftUI um eine Funktion erweitert, die es ermöglich, Texte und Bilder auf der grafischen Oberfläche unkenntlich zu machen. An ihrer Stelle werden dann Platzhalter, graue Rechtecke, angezeigt. Das kann sinnvoll sein, wenn Einstellungen oder sensible Daten unkenntlich gemacht werden müssen. Beispielsweise, wenn für ein Produkt mit Bildschirmfotos eine Dokumentation erstellt wird. Gespeicherte Passwörter können ebenfalls nur unkenntlich angezeigt werden, bis der Nutzer einer Anzeige explizit zustimmt. Einige Passwortmanager arbeiten auf diese Art.
Realisiert wird es mit dem neuen ViewModifier redacted.

Text("This is placeholder text")

    .redacted(reason: .placeholder)

Der redacted-Modifier kann auf einen einzelnen Text oder ein Bild angewendet werden, er funktioniert aber auch mit Elementen, die Texte oder Bilder enthalten. Beispielsweise einen VStack. In diesem Fall werden sämtliche Texte und Bilder im Stack unkenntlich. Soll das mit einem Element im Stapel nicht passieren, muss dieses explizit mit unredacted ausgezeichnet werden.

VStack {

   Text("Vorname, Name")

        .unredacted()

    Text("Straße und Hausnummer")

    Text("PLZ und Ort")

}.redacted(reason: .placeholder)

Die redacted-Eigenschaft kann zur Laufzeit geändert werden, zum Beispiel in Abhängigkeit einer bool Variablen. Im redacted-Modifier wird dann entweder .placeholder oder .init() verwendet.

struct RedactedViewView {

    

    @State var isRedacted = false

    

    var body: some View {

        

        VStack{

            VStack {

                Image("ProfilImage")

                    .frame(width: 300, height: 300, alignment: .center)

                    .cornerRadius(10)

                

                Text("Vorname, Name")

                    .unredacted()

                Text("Straße und Hausnummer")

                Text("PLZ und Ort")

            }.redacted(reason:  isRedacted ? .placeholder : .init())

            

            Toggle(isOn: $isRedacted) {

                Text("Unkenntlich")

            }.padding()

        }

    }

}

Stacks Image 165
Stacks Image 167

Was Apple mit diesem ViewModifier langfristig geplant hat, ist nicht bekannt. In Programmen funktioniert er bisher ausschließlich mit Texten und Bildern und als Grund (reason) für eine Unkenntlichmachung gibt es den Wert .placeholder.


Geschrieben am: 20.10.2020
Technologien: Swift, SwiftUI, macOS, iOS