コメント
コメントの投稿
※名前とタイトルが入力されていないコメントでは他のコメントとの区別ができません。
入力されていないコメントには返信しませんのであらかじめご了承くださいませ。
<plist version="1.0">
<dict>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
</dict>
</plist>
public class BaseContentPage : ContentPage
{
public BaseContentPage() : base()
{
if (DependencyService.Get<IDeviceService>().GetModelNumber().Contains("X"))
{
this.Padding = new Thickness(0, 0, 0, 23);
}
//または以下のように記述すると簡単ですが、全面画面を活かしきれないと考えます。
//NuGet Xamarin.Forms 2.4.0.74863 が必要です。(検証も必要です)
//using Xamarin.Forms.PlatformConfiguration.iOSSpecific;
//On<Xamarin.Forms.PlatformConfiguration.iOS>().SetUseSafeArea(true);
}
}
public override void ViewDidLayoutSubviews()
{
base.ViewDidLayoutSubviews();
if (View != null)
{
UIView[] subviews = View.Subviews.Where(v => v != NavigationBar).ToArray();
var toolBarViews = subviews.Where(v => v is UIToolbar).ToArray();
var otherViews = subviews.Where(v => !(v is UIToolbar)).ToArray();
nfloat toolbarHeight = 0;
//iPhone X 用のマイクスペース部分だけ上に表示する
nfloat bottomMargin = 0;
if (DependencyService.Get<IDeviceService>().GetModelNumber().Contains("X"))
{
bottomMargin = 23;
}
foreach (var uIView in toolBarViews)
{
uIView.SizeToFit();
uIView.Frame = new CGRect
{
X = 0,
Y = View.Bounds.Height - uIView.Frame.Height - bottomMargin,
Width = View.Bounds.Width,
Height = uIView.Frame.Height,
};
var thisToolbarHeight = uIView.Frame.Height;
if (toolbarHeight < thisToolbarHeight)
{
toolbarHeight = thisToolbarHeight;
}
}
var othersHeight = View.Bounds.Height - toolbarHeight;
var othersFrame = new CGRect(View.Bounds.X, View.Bounds.Y, View.Bounds.Width, othersHeight - bottomMargin);
foreach (var uIView in otherViews)
{
uIView.Frame = othersFrame;
}
}
}
※名前とタイトルが入力されていないコメントでは他のコメントとの区別ができません。
入力されていないコメントには返信しませんのであらかじめご了承くださいませ。