# Il blog.

Articoli, tutorial e novità sullo sviluppo mobile, scritti da Costantino Pistagna in italiano e in inglese.

- 2025-09-02 [Liquid Glass vs Material 3: la fine della convergenza nel design mobile](https://www.sofapps.it/it/blog/liquid-glass-vs-material-3/index.md): Liquid Glass di Apple e Material 3 Expressive di Google allontanano il design mobile, chiudendo anni di convergenza e ponendo nuove scelte a chi sviluppa app.
- 2025-06-23 [WWDC25: Benvenuto Liquid Glass](https://www.sofapps.it/it/blog/wwdc25-liquid-glass/index.md): Come il design Apple è passato dallo skeuomorfismo del 2007 al minimalismo di iOS 7 fino a Liquid Glass, e perché il vetro si presta alle interfacce a livelli.
- 2022-09-08 [Dynamic Island: L'isola che non c'è ed il nuovo iPhone 14 Pro](https://www.sofapps.it/it/blog/dynamic-island-iphone-14-pro/index.md): La Dynamic Island di iPhone 14 Pro: come Apple trasforma il notch, nato con iPhone X nel 2017, in una funzione software, e perché sembra un colpo di genio.
- 2021-05-04 [App Tracking Transparency con Combine](https://www.sofapps.it/it/blog/app-tracking-transparency-combine/index.md): Come incapsulare ATTrackingManager e ASIdentifierManager in un ObservableObject con Combine, per chiedere il consenso al tracking e leggere l'advertising ID.
- 2021-03-24 [SwiftUI dentro UIKit: collegare due mondi](https://www.sofapps.it/it/blog/swiftui-within-uikit/index.md): Come portare in SwiftUI solo il contenuto di una UITableViewCell, usando UIHostingController e notifiche Combine, senza problemi di scrolling.
- 2020-11-20 [Apple Silicon: ritorno al futuro](https://www.sofapps.it/it/blog/apple-silicon-back-to-the-future/index.md): Perché l'M1 potrebbe essere per i computer ciò che l'iPhone fu nel 2007: l'integrazione tra hardware e software di Apple e un vantaggio difficile da colmare.
- 2020-01-10 [Programmare in SwiftUI: ObjectBinding e BindableObject](https://www.sofapps.it/it/blog/swiftui-programming-objectbinding/index.md): Come condividere un modello basato su class tra view SwiftUI con @ObjectBinding e BindableObject, notificando i cambi con il PassthroughSubject di Combine.
- 2020-01-09 [Programmare in SwiftUI: introduzione agli stati](https://www.sofapps.it/it/blog/swiftui-programming-states/index.md): Come @State lega una view SwiftUI ai suoi dati, perché supera l'approccio dei controller UIKit e come estrarre subview e passare loro un modello.
- 2020-01-08 [Programmare in SwiftUI: costruire view più complesse](https://www.sofapps.it/it/blog/swiftui-programming-complex-views/index.md): Come costruire in SwiftUI una cella personalizzata con VStack, HStack, Image e Spacer, e come la closure ViewBuilder compone le view senza addSubview.
- 2020-01-07 [Programmare in SwiftUI: class e struct in SwiftUI](https://www.sofapps.it/it/blog/swiftui-programming-classes-structs/index.md): Perché una class non può sostituire direttamente una struct come View in SwiftUI, quale errore dà il compilatore e come una final class risolve il problema.
- 2020-01-06 [Programmare in SwiftUI: l'oggetto View](https://www.sofapps.it/it/blog/swiftui-programming-view-object/index.md): Cos'è una View in SwiftUI: una struct che adotta un protocol con un solo requisito, il body, e come gli opaque type si differenziano dai protocol.
- 2020-01-05 [Programmare in SwiftUI: introduzione](https://www.sofapps.it/it/blog/swiftui-programming-introduction/index.md): Perché SwiftUI segna una rottura con UIKit e con MVC: un framework dichiarativo in cui l'interfaccia deriva dallo stato. Gli appunti che aprono una serie.
- 2019-06-28 [TextField e UIViewRepresentable](https://www.sofapps.it/it/blog/textfield-uiviewrepresentable/index.md): Come aggirare i limiti del TextField di iOS 13 beta 2 incapsulando UITextField e il suo delegate in una UIViewRepresentable, con il focus tra i campi.
- 2019-06-18 [Un gioco TicTacToe in SwiftUI](https://www.sofapps.it/it/blog/tictactoe-swiftui/index.md): Un TicTacToe funzionante in meno di 160 righe di SwiftUI: un model basato su Combine, una SquareView collegata ad esso e un alert a fine partita.
- 2019-06-17 [iPadOS, Catalyst e Sidecar](https://www.sofapps.it/it/blog/ipados-catalyst-sidecar/index.md): Dopo una settimana con un iPad Pro e una tastiera bluetooth: perché iPadOS, Catalyst e Sidecar contano più dell'hardware, pur senza sostituire un MacBook Pro.
- 2019-06-13 [Programmare con SwiftUI](https://www.sofapps.it/it/blog/swiftui-programming/index.md): Perché SwiftUI segna una svolta per le piattaforme Apple: un framework dichiarativo in cui l'interfaccia deriva dallo stato, e cosa cambia rispetto a MVC.
- 2018-06-18 [WWDC18: ARKit 2, confronto delle prestazioni del tracking 2D](https://www.sofapps.it/it/blog/arkit2-image-tracking-performance/index.md): Un caso pratico con ARKit 2: tracciare biglietti da visita con ARImageTrackingConfiguration su iOS 12 e aggirare il tracking più debole di iOS 11.
- 2018-06-02 [Un workflow di sharing personalizzato con CloudKit](https://www.sofapps.it/it/blog/custom-cloudkit-sharing/index.md): Condividere dati con CloudKit senza UICloudSharingController: un record pubblico conserva l'URL del CKShare e gli amici leggono i dati privati senza dialoghi.
- 2018-03-28 [Stored properties ed extension: un approccio Swift puro](https://www.sofapps.it/it/blog/swift-stored-properties-extensions/index.md): Le extension di Swift non hanno stored properties. Una soluzione Swift pura con una struct Holder statica, poi con un dizionario indicizzato per istanza.
- 2018-02-01 [Creiamo un accessorio per HomeKit](https://www.sofapps.it/it/blog/homekit-accessory-arduino/index.md): Come costruire un accessorio HomeKit con Raspberry Pi e Homebridge più un Arduino YUN: un telecomando per il cancello e un sensore DHT22 comandati con Siri.
- 2017-11-16 [Racconti dal futuro](https://www.sofapps.it/it/blog/tales-from-the-future/index.md): Un post su Instagram che non parte innesca un'ipotesi sui permessi della fotocamera e sulla TrueDepth dell'iPhone X, e su perché iOS dovrebbe segnalarne l'uso.
- 2017-11-15 [Perché Face ID è un salto nel futuro](https://www.sofapps.it/it/blog/face-id-step-forward/index.md): Perché Face ID è più di una password biometrica: il sensore TrueDepth, un motore che apprende il contesto e perché gli attacchi mostrati dimostrano poco.
- 2017-11-08 [Una extension Swift per String e HTML](https://www.sofapps.it/it/blog/swift-string-html-extension/index.md): Convertire stringhe HTML in NSAttributedString con una extension nativa di String, impostare font, dimensione e colore via CSS e leggere i document attributes.
- 2017-11-03 [iPhone X e la visione periferica](https://www.sofapps.it/it/blog/iphone-x-peripheral-vision/index.md): Come la Safe Area di iPhone X e la visione periferica guidano il layout di un'app: zone dello schermo, margini in landscape e proporzioni rispetto a iPhone 8.
