mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-11-05 13:26:48 +08:00
fix(ios): resilience to nativeView access under edge cases (#10276)
This commit is contained in:
@ -898,13 +898,15 @@ export class View extends ViewCommon implements ViewDefinition {
|
|||||||
CATransaction.begin();
|
CATransaction.begin();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (value instanceof UIColor) {
|
if (this.nativeViewProtected) {
|
||||||
this.nativeViewProtected.backgroundColor = value;
|
if (value instanceof UIColor) {
|
||||||
} else {
|
this.nativeViewProtected.backgroundColor = value;
|
||||||
iosBackground.createBackgroundUIColor(this, (color: UIColor) => {
|
} else {
|
||||||
this.nativeViewProtected.backgroundColor = color;
|
iosBackground.createBackgroundUIColor(this, (color: UIColor) => {
|
||||||
});
|
this.nativeViewProtected.backgroundColor = color;
|
||||||
this._setNativeClipToBounds();
|
});
|
||||||
|
this._setNativeClipToBounds();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!updateSuspended) {
|
if (!updateSuspended) {
|
||||||
@ -915,8 +917,10 @@ export class View extends ViewCommon implements ViewDefinition {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_setNativeClipToBounds() {
|
_setNativeClipToBounds() {
|
||||||
const backgroundInternal = this.style.backgroundInternal;
|
if (this.nativeViewProtected) {
|
||||||
this.nativeViewProtected.clipsToBounds = (this.nativeViewProtected instanceof UIScrollView || backgroundInternal.hasBorderWidth() || backgroundInternal.hasBorderRadius()) && !backgroundInternal.hasBoxShadow();
|
const backgroundInternal = this.style.backgroundInternal;
|
||||||
|
this.nativeViewProtected.clipsToBounds = (this.nativeViewProtected instanceof UIScrollView || backgroundInternal.hasBorderWidth() || backgroundInternal.hasBorderRadius()) && !backgroundInternal.hasBoxShadow();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private _setupPopoverControllerDelegate(controller: UIViewController, parent: View) {
|
private _setupPopoverControllerDelegate(controller: UIViewController, parent: View) {
|
||||||
|
|||||||
@ -23,7 +23,9 @@ export class LayoutBase extends LayoutBaseCommon {
|
|||||||
|
|
||||||
_setNativeClipToBounds() {
|
_setNativeClipToBounds() {
|
||||||
if (this.clipToBounds) {
|
if (this.clipToBounds) {
|
||||||
this.nativeViewProtected.clipsToBounds = true;
|
if (this.nativeViewProtected) {
|
||||||
|
this.nativeViewProtected.clipsToBounds = true;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
super._setNativeClipToBounds();
|
super._setNativeClipToBounds();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -275,7 +275,9 @@ export class ListView extends ListViewBase {
|
|||||||
|
|
||||||
_setNativeClipToBounds() {
|
_setNativeClipToBounds() {
|
||||||
// Always set clipsToBounds for list-view
|
// Always set clipsToBounds for list-view
|
||||||
this.ios.clipsToBounds = true;
|
if (this.ios) {
|
||||||
|
this.ios.clipsToBounds = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@profile
|
@profile
|
||||||
|
|||||||
Reference in New Issue
Block a user