Added the ability to query the safe area (#404)

This commit is contained in:
Mirko 2019-11-24 23:47:35 +01:00 committed by Mathieu Virbel
parent 493e9c63af
commit eacd88bf3f
3 changed files with 35 additions and 0 deletions

View file

@ -11,12 +11,18 @@ from os.path import basename
cdef extern from "ios_wrapper.h":
ctypedef void (*ios_send_email_cb)(char *, void *)
ctypedef struct padding:
float top
float bottom
float right
float left
int ios_send_email(char *subject, char *text, char *mimetype, char
*filename, char *filename_alias, ios_send_email_cb cb, void *userdata)
void ios_open_url(char *url)
void load_url_webview(char *url, int width, int height)
float ios_uiscreen_get_scale()
int ios_uiscreen_get_dpi()
padding ios_get_safe_area()
cdef void _send_email_done(char *status, void *data):
cdef object callback = <object>data
@ -206,6 +212,10 @@ def get_dpi():
'''
return ios_uiscreen_get_dpi()
def get_safe_area():
'''Return the safe area bounds
'''
return ios_get_safe_area()
from pyobjus import autoclass, selector, protocol
from pyobjus.protocols import protocols

View file

@ -127,3 +127,20 @@ int ios_uiscreen_get_dpi() {
}
return dpi;
}
padding ios_get_safe_area() {
padding safearea;
if (@available(iOS 11.0, *)){
UIWindow *window = UIApplication.sharedApplication.windows[0];
safearea.top = window.safeAreaInsets.top;
safearea.bottom = window.safeAreaInsets.bottom;
safearea.left = window.safeAreaInsets.left;
safearea.right = window.safeAreaInsets.right;
} else {
safearea.top = 0;
safearea.bottom = 0;
safearea.left = 0;
safearea.right = 0;
}
return safearea;
}

View file

@ -1,8 +1,16 @@
#ifndef __IOS_WRAPPER
#define __IOS_WRAPPER
typedef struct {
float top;
float bottom;
float right;
float left;
} padding;
float ios_uiscreen_get_scale(void);
int ios_uiscreen_get_dpi(void);
padding ios_get_safe_area(void);
void ios_open_url(char *url);
void load_url_webview(char *url, int width, int height);