[Xuni:Calendar]デバッグを無効にした状態でiPadやiPhoneに配置すると描画されない場合がある (Xamarin.Forms)
対象製品
Xuni
詳細
Xamarin.FormsでCalendarを配置したiOSアプリが、ビルドは正常終了してもCalendarの表示領域に何も表示されない場合があります。
シミュレーターの実行では正常に表示されても、実機では表示されません。
これはXamarin.Formsの動作に問題があると想定できます。
アプリサイズの最適化を行うために、利用していないライブラリなどのリンクをビルド時に省略しますが、何らかの要因でコントロールの描画が排除されてしまった状態になっています。
これは「デバイス固有のビルド」を行うオプションを有効にすることで回避できますが、Release構成のビルドでは推奨されていません。
その代わりに、iOSプロジェクト内のAppDelegate.csに、ダミーでCalendarRendarerを定義することで回避できます。
この方法でiOSオプションの「デバッグを有効にする(iOS Debug)」「デバイス固有のビルドを有効にする(iOS Build)」がOFFの状態で、ビルドおよび配置を行えば正常に描画されます。
以下は、AppDelegate.csの記述例です。
サンプルコード
C#(Xamarin.Forms)
Xuni > 技術情報 > ドキュメント > C# による Xuni コンポーネントの追加
シミュレーターの実行では正常に表示されても、実機では表示されません。
これはXamarin.Formsの動作に問題があると想定できます。
アプリサイズの最適化を行うために、利用していないライブラリなどのリンクをビルド時に省略しますが、何らかの要因でコントロールの描画が排除されてしまった状態になっています。
これは「デバイス固有のビルド」を行うオプションを有効にすることで回避できますが、Release構成のビルドでは推奨されていません。
その代わりに、iOSプロジェクト内のAppDelegate.csに、ダミーでCalendarRendarerを定義することで回避できます。
この方法でiOSオプションの「デバッグを有効にする(iOS Debug)」「デバイス固有のビルドを有効にする(iOS Build)」がOFFの状態で、ビルドおよび配置を行えば正常に描画されます。
以下は、AppDelegate.csの記述例です。
サンプルコード
C#(Xamarin.Forms)
[Register("AppDelegate")] public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate { // ダミーでCalendarRendererを生成 public static Xuni.Forms.Calendar.Platform.iOS.CalendarRenderer calDummy; public override bool FinishedLaunching(UIApplication app, NSDictionary options) { global::Xamarin.Forms.Forms.Init(); // Xuni Calendarを初期化 Xuni.Forms.Calendar.Platform.iOS.Forms.Init(); LoadApplication(new App()); return base.FinishedLaunching(app, options); } }
Xuni > 技術情報 > ドキュメント > C# による Xuni コンポーネントの追加