Migrar uma aplicação iOS para o WinUI 3

Se tens uma aplicação iOS e quiseres trazê-la para o Windows, as ferramentas de IA podem fazer a maior parte do trabalho de mapeamento. Esta página fornece as principais traduções conceituais do UIKit/SwiftUI para o WinUI 3. Use estas tabelas como contexto ao solicitar o seu agente de IA — fornecer mapeamentos exatos da API desde o início produz resultados muito mais precisos do que pedir uma conversão genérica.

Instale primeiro o plugin do agente WinUI para dar ao seu agente conhecimento preciso sobre o WinUI 3:

gh copilot plugin install winui@awesome-copilot

Mapeamento conceitual

iOS (UIKit / SwiftUI) Equivalente ao WinUI 3 Observações
UIViewController Page As páginas do WinUI são navegadas através de Frame
UINavigationController Frame + NavigationView Utilização Frame.Navigate() para transições de página
UITabBarController NavigationView (abas no topo ou à esquerda)
UITableView ListView Utilize ObservableCollection<T> para associação de dados
UICollectionView GridView
UIAlertController ContentDialog Tem de estar associado ao elemento atual XamlRoot
UILabel TextBlock
UITextField TextBox
UIButton Button
UIImageView Image
UIStackView StackPanel Definir Orientation para Horizontal ou Vertical
Auto Layout Grid / StackPanel / RelativePanel O layout XAML é baseado em linhas/colunas
@State / @Binding (SwiftUI) INotifyPropertyChanged / ObservableProperty (CommunityToolkit.Mvvm)
NSUserDefaults ApplicationData.Current.LocalSettings
URLSession HttpClient Utilizar o comando System.Net.Http.HttpClient
NotificationCenter Eventos ou WeakReferenceMessenger (CommunityToolkit.Mvvm)
DispatchQueue.main.async DispatcherQueue.TryEnqueue
AppDelegate.applicationDidFinishLaunching App.OnLaunched
SceneDelegate / windowScene MainWindow / AppWindow
FileManager StorageFolder / StorageFile
UserNotifications AppNotificationManager (Microsoft.Windows.AppNotifications)

Prompt inicial

Use este prompt para dar ao seu agente de IA o contexto de que precisa antes de iniciar uma migração:

I'm migrating an iOS app to WinUI 3 using the Windows App SDK.

The app is written in [Swift / Objective-C] using [UIKit / SwiftUI].

Apply these mappings:
- UIViewController → Page, navigated via Frame
- UINavigationController → Frame + NavigationView
- UITableView → ListView with ObservableCollection<T>
- UIAlertController → ContentDialog (parented to XamlRoot)
- NSUserDefaults → ApplicationData.Current.LocalSettings
- URLSession → System.Net.Http.HttpClient
- DispatchQueue.main.async → DispatcherQueue.TryEnqueue
- @State / @Binding → INotifyPropertyChanged via CommunityToolkit.Mvvm

Use Microsoft.UI.Xaml.* namespaces throughout — never Windows.UI.Xaml.*.
Generate C# — not Swift.

O que não mapeia diretamente

Alguns conceitos do iOS não têm um equivalente direto ao WinUI: