The application is made on scenes, but only one root scene is used. The window class is called CalculatorWindow.
The Root Controller is named CalculatorController. All elements fit into the Safe Area Layout Guide.
The layout guide representing the portion of your view that is unobscured by bars and other content.
Added gesture UISystemGestureGateGestureRecognizer to the whole screen, it is not clear what it does. Perhaps the gesture animates the buttons if you move your finger across the screen.
The buttons are in the CalculatorKeypadView container. The buttons are arranged in frames, and the button container itself is left with constraints.
All buttons are objects of class CalculatorKeypadButton, it inherits from UIButton. Inside the buttons is the system UILabel, even the C - Clear button is made of text.
There are letters under the numbers in the dialer, where Apple has converted all the text into pictures.
The window with the entered digits is called a DisplayView. The width of the label inside the container is recalculated each time a new digit or operation is entered. They added 3 gestures to the view - swipe, long-press and tap.
The height of the label with the result is controlled by the constraints. For landscape orientation you get a strange value of 71.5.
In portrait mode, there are no hidden UIView. So, when you rotate the device, new buttons are added and arranged on the fly. Buttons from portrait mode are saved between rotations. This is what the transition between portrait and landscape orientation looks like:
The app supports Voice Over and Voice Control for all interactive elements.
The window with the result is dictated as "Result, 89, Summary Element".