Last active
March 18, 2023 14:38
-
-
Save naithar/01fa04248956c39a06b7b061b19be83f to your computer and use it in GitHub Desktop.
Godot iOS Safe Area
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extends MarginContainer | |
onready var viewport = get_viewport() | |
onready var screen_size = viewport.get_visible_rect().size | |
func _ready(): | |
viewport.connect("size_changed", self, "resize_window") | |
update_safe_area() | |
func resize_window(): | |
var new_size = viewport.get_visible_rect().size | |
if new_size.x != screen_size.x or new_size.y != screen_size.y: | |
screen_size = new_size | |
update_safe_area() | |
func update_safe_area(): | |
var rect = OS.get_window_safe_area() | |
var window_size = OS.get_window_size() | |
var offset = Vector2( | |
window_size.x - rect.size.x - rect.position.x, | |
window_size.y - rect.size.y - rect.position.y | |
) | |
var aspect_y = screen_size.y / window_size.y | |
var aspect_x = screen_size.x / window_size.x | |
var topLeft = Vector2(rect.position.x * aspect_x, rect.position.y * aspect_y) | |
var bottomRight = Vector2(-offset.x * aspect_x, -offset.y * aspect_y) | |
margin_left = topLeft.x | |
margin_top = topLeft.y | |
margin_right = bottomRight.x | |
margin_bottom = bottomRight.y | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
func _update(delta): | |
var rect = OS.get_window_safe_area() | |
var screen_size = OS.get_window_size() | |
var view_size = get_size() | |
var aspect_y = view_size.y / screen_size.y | |
var aspect_x = view_size.x / screen_size.x | |
$Panel.set_position(Vector2(rect.position.x * aspect_x, rect.position.y * aspect_y)) | |
$Panel.set_size(Vector2(rect.size.x * aspect_x, rect.size.y * aspect_y)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
func _update(delta): | |
var rect = DisplayServer.screen_get_usable_rect() | |
var screen_size = DisplayServer.screen_get_size() | |
var view_size = get_size() | |
var aspect_y = view_size.y / screen_size.y | |
var aspect_x = view_size.x / screen_size.x | |
$Panel.set_position(Vector2(rect.position.x * aspect_x, rect.position.y * aspect_y)) | |
$Panel.set_size(Vector2(rect.size.x * aspect_x, rect.size.y * aspect_y)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment