mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-15 19:26:42 +08:00
Fix to always get the same bounds no matter if we are shown modally or not (for iOS).
Remove code that moves actionBar when there is incoming call. We now depend on the autolayout to position us correctly. _addView, _removeView won't request layout for iOS. LayoutBase: addChild & remvoeChild will request layout. ContentView: content change will request layout.
This commit is contained in:
@ -1,4 +1,4 @@
|
||||
<Page xmlns="http://schemas.nativescript.org/tns.xsd" loaded="pageLoaded" backgroundColor="Red">
|
||||
<Page xmlns="http://schemas.nativescript.org/tns.xsd" loaded="pageLoaded" backgroundColor="white">
|
||||
<StackLayout backgroundColor="PaleGreen">
|
||||
<Button text="Login (pop-up)" tap="onTap" />
|
||||
<Button text="Login (full-screen)" tap="onTap" />
|
||||
|
@ -22,6 +22,9 @@ export class ContentView extends CustomLayoutView implements ContentViewDefiniti
|
||||
}
|
||||
|
||||
this._onContentChanged(oldView, value);
|
||||
if (oldView !== value) {
|
||||
this.requestLayout();
|
||||
}
|
||||
}
|
||||
|
||||
get layoutView(): View {
|
||||
|
@ -40,16 +40,6 @@ export class View extends ViewCommon {
|
||||
*/
|
||||
_nativeBackgroundState: "unset" | "invalid" | "drawn";
|
||||
|
||||
public _addViewCore(view: ViewCommon, atIndex?: number) {
|
||||
super._addViewCore(view, atIndex);
|
||||
this.requestLayout();
|
||||
}
|
||||
|
||||
public _removeViewCore(view: ViewCommon) {
|
||||
super._removeViewCore(view);
|
||||
this.requestLayout();
|
||||
}
|
||||
|
||||
get isLayoutRequired(): boolean {
|
||||
return (this._privateFlags & PFLAG_LAYOUT_REQUIRED) === PFLAG_LAYOUT_REQUIRED;
|
||||
}
|
||||
@ -255,7 +245,7 @@ export class View extends ViewCommon {
|
||||
}
|
||||
|
||||
const background = this.style.backgroundInternal;
|
||||
const backgroundDependsOnSize = background.image
|
||||
const backgroundDependsOnSize = background.image
|
||||
|| !background.hasUniformBorder()
|
||||
|| background.hasBorderRadius();
|
||||
|
||||
@ -630,9 +620,9 @@ export namespace ios {
|
||||
if (extendedController.scrollable !== scrollable
|
||||
|| extendedController.navBarHidden !== navBarHidden
|
||||
|| extendedController.hasChildControllers !== hasChildControllers) {
|
||||
extendedController.scrollable = scrollable;
|
||||
extendedController.navBarHidden = navBarHidden;
|
||||
extendedController.hasChildControllers = hasChildControllers;
|
||||
extendedController.scrollable = scrollable;
|
||||
extendedController.navBarHidden = navBarHidden;
|
||||
extendedController.hasChildControllers = hasChildControllers;
|
||||
constrainView(extendedController, owner);
|
||||
}
|
||||
}
|
||||
@ -643,7 +633,7 @@ export namespace ios {
|
||||
return;
|
||||
}
|
||||
|
||||
const frame = controller.beingPresented ? owner.nativeView.superview.frame : controller.view.subviews[0].bounds;
|
||||
const frame = controller.view.subviews[0].bounds;
|
||||
const origin = frame.origin;
|
||||
const size = frame.size;
|
||||
const width = layout.toDevicePixels(size.width);
|
||||
|
@ -252,28 +252,6 @@ export class Frame extends FrameBase {
|
||||
public _onNavigatingTo(backstackEntry: BackstackEntry, isBack: boolean) {
|
||||
//
|
||||
}
|
||||
|
||||
_handleHigherInCallStatusBarIfNeeded() {
|
||||
let statusBarHeight = uiUtils.ios.getStatusBarHeight();
|
||||
if (!this._ios ||
|
||||
!this._ios.controller ||
|
||||
!this._ios.controller.navigationBar ||
|
||||
this._ios.controller.navigationBar.hidden ||
|
||||
utils.layout.toDevicePixels(this._ios.controller.navigationBar.frame.origin.y) === statusBarHeight) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (traceEnabled()) {
|
||||
traceWrite(`Forcing navigationBar.frame.origin.y to ${statusBarHeight} due to a higher in-call status-bar`, traceCategories.Layout);
|
||||
}
|
||||
|
||||
this._ios.controller.navigationBar.removeConstraints((<any>this)._ios.controller.navigationBar.constraints);
|
||||
this._ios.controller.navigationBar.frame = CGRectMake(
|
||||
this._ios.controller.navigationBar.frame.origin.x,
|
||||
utils.layout.toDeviceIndependentPixels(statusBarHeight),
|
||||
this._ios.controller.navigationBar.frame.size.width,
|
||||
this._ios.controller.navigationBar.frame.size.height);
|
||||
}
|
||||
}
|
||||
|
||||
let transitionDelegates = new Array<TransitionDelegate>();
|
||||
|
@ -1,15 +1,23 @@
|
||||
import { LayoutBaseCommon, clipToBoundsProperty } from "./layout-base-common";
|
||||
import { LayoutBaseCommon, clipToBoundsProperty, View } from "./layout-base-common";
|
||||
|
||||
export * from "./layout-base-common";
|
||||
|
||||
export class LayoutBase extends LayoutBaseCommon {
|
||||
nativeViewProtected: UIView;
|
||||
|
||||
[clipToBoundsProperty.getDefault](): boolean {
|
||||
return false;
|
||||
public addChild(child: View): void {
|
||||
super.addChild(child);
|
||||
this.requestLayout();
|
||||
}
|
||||
[clipToBoundsProperty.setNative](value: boolean) {
|
||||
this._setNativeClipToBounds();
|
||||
|
||||
public insertChild(child: View, atIndex: number): void {
|
||||
super.insertChild(child, atIndex);
|
||||
this.requestLayout();
|
||||
}
|
||||
|
||||
public removeChild(child: View): void {
|
||||
super.removeChild(child);
|
||||
this.requestLayout();
|
||||
}
|
||||
|
||||
_setNativeClipToBounds() {
|
||||
@ -19,4 +27,11 @@ export class LayoutBase extends LayoutBaseCommon {
|
||||
super._setNativeClipToBounds();
|
||||
}
|
||||
}
|
||||
|
||||
[clipToBoundsProperty.getDefault](): boolean {
|
||||
return false;
|
||||
}
|
||||
[clipToBoundsProperty.setNative](value: boolean) {
|
||||
this._setNativeClipToBounds();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user