ios_platform
only.Expand description
§iOS / UIKit
Winit has an OS requirement of iOS 8 or higher, and is regularly tested on iOS 9.3.
iOS’s main UIApplicationMain
does some init work that’s required by all
UI-related code (see issue #1705). It is best to create your windows
inside Event::Resumed
.
§Building app
To build ios app you will need rustc built for this targets:
- armv7-apple-ios
- armv7s-apple-ios
- i386-apple-ios
- aarch64-apple-ios
- x86_64-apple-ios
Then
cargo build --target=...
The simplest way to integrate your app into xcode environment is to build it as a static library. Wrap your main function and export it.
#[no_mangle]
pub extern fn start_winit_app() {
start_inner()
}
fn start_inner() {
...
}
Compile project and then drag resulting .a into Xcode project. Add winit.h to xcode.
void start_winit_app();
Use start_winit_app inside your xcode’s main function.
§App lifecycle and events
iOS environment is very different from other platforms and you must be very careful with it’s events. Familiarize yourself with app lifecycle.
This is how those event are represented in winit:
- applicationDidBecomeActive is Resumed
- applicationWillResignActive is Suspended
- applicationWillTerminate is LoopExiting
Keep in mind that after LoopExiting event is received every attempt to draw with opengl will result in segfault.
Also note that app may not receive the LoopExiting event if suspended; it might be SIGKILL’ed.
Structs§
- Screen
Edge - The edges of a screen.
Enums§
- Idiom
- The device idiom.
- Status
BarStyle - Valid
Orientations - Valid orientations for a particular
Window
.
Traits§
- Event
Loop ExtIOS - Additional methods on
EventLoop
that are specific to iOS. - Monitor
Handle ExtIOS - Additional methods on
MonitorHandle
that are specific to iOS. - Window
Attributes ExtIOS - Additional methods on
WindowAttributes
that are specific to iOS. - Window
ExtIOS - Additional methods on
Window
that are specific to iOS.