mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-11-05 13:26:48 +08:00
fix(ios): safe area memory leak on iOS 10 and older versions (#10673)
This commit is contained in:
committed by
GitHub
parent
5f8fb2c36a
commit
0eb2745589
@@ -200,20 +200,38 @@ export class IOSHelper {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method simulates the iOS 11+ safeAreaLayoutGuide property and its constraints for older versions.
|
||||
*
|
||||
* @param controller
|
||||
* @param owner
|
||||
*/
|
||||
static updateConstraints(controller: UIViewController, owner: View): void {
|
||||
if (!__VISIONOS__ && SDK_VERSION <= 10) {
|
||||
const layoutGuide = IOSHelper.initLayoutGuide(controller);
|
||||
(<any>controller.view).safeAreaLayoutGuide = layoutGuide;
|
||||
if (!controller.view.safeAreaLayoutGuide) {
|
||||
IOSHelper.initLayoutGuide(controller);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static initLayoutGuide(controller: UIViewController) {
|
||||
/**
|
||||
* This method simulates the iOS 11+ safeAreaLayoutGuide property for older versions.
|
||||
*
|
||||
* @param controller
|
||||
*/
|
||||
static initLayoutGuide(controller: UIViewController): UILayoutGuide {
|
||||
const rootView = controller.view;
|
||||
const layoutGuide = UILayoutGuide.new();
|
||||
rootView.addLayoutGuide(layoutGuide);
|
||||
NSLayoutConstraint.activateConstraints(<any>[layoutGuide.topAnchor.constraintEqualToAnchor(controller.topLayoutGuide.bottomAnchor), layoutGuide.bottomAnchor.constraintEqualToAnchor(controller.bottomLayoutGuide.topAnchor), layoutGuide.leadingAnchor.constraintEqualToAnchor(rootView.leadingAnchor), layoutGuide.trailingAnchor.constraintEqualToAnchor(rootView.trailingAnchor)]);
|
||||
|
||||
return layoutGuide;
|
||||
if (!rootView.safeAreaLayoutGuide) {
|
||||
const layoutGuide = UILayoutGuide.new();
|
||||
|
||||
rootView.addLayoutGuide(layoutGuide);
|
||||
NSLayoutConstraint.activateConstraints([layoutGuide.topAnchor.constraintEqualToAnchor(controller.topLayoutGuide.bottomAnchor), layoutGuide.bottomAnchor.constraintEqualToAnchor(controller.bottomLayoutGuide.topAnchor), layoutGuide.leadingAnchor.constraintEqualToAnchor(rootView.leadingAnchor), layoutGuide.trailingAnchor.constraintEqualToAnchor(rootView.trailingAnchor)]);
|
||||
|
||||
(<any>rootView).safeAreaLayoutGuide = layoutGuide;
|
||||
}
|
||||
|
||||
return rootView.safeAreaLayoutGuide;
|
||||
}
|
||||
|
||||
static layoutView(controller: UIViewController, owner: View): void {
|
||||
|
||||
Reference in New Issue
Block a user