diff --git a/CHANGELOG.md b/CHANGELOG.md index e45560f816d..994435564ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,7 @@ - **Breaking:** `primary_monitor` now returns `Option`. - On macOS, updated core-* dependencies and cocoa. - Bump `parking_lot` to 0.11 +- On iOS, fixed starting the app in landscape where the view still had portrait dimensions. # 0.22.2 (2020-05-16) diff --git a/src/platform_impl/ios/view.rs b/src/platform_impl/ios/view.rs index 5481b8eff54..da195a0ae55 100644 --- a/src/platform_impl/ios/view.rs +++ b/src/platform_impl/ios/view.rs @@ -134,6 +134,18 @@ unsafe fn get_view_class(root_view_class: &'static Class) -> &'static Class { height: screen_frame.size.height as f64, } .to_physical(scale_factor.into()); + + // If the app is started in landscape, the view frame and window bounds can be mismatched. + // The view frame will be in portrait and the window bounds in landscape. So apply the + // window bounds to the view frame to make it consistent. + let view_frame: CGRect = msg_send![object, frame]; + let window_bounds: CGRect = msg_send![window, bounds]; + if view_frame.size.width != window_bounds.size.width + || view_frame.size.height != window_bounds.size.height + { + let () = msg_send!(object, setFrame: window_bounds); + } + app_state::handle_nonuser_event(EventWrapper::StaticEvent(Event::WindowEvent { window_id: RootWindowId(window.into()), event: WindowEvent::Resized(size),