Module winit::platform::ios

source ·
Available on 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§

Enums§

Traits§