web-dev-qa-db-ja.com

iOS 8:起動画面StoryBoardが黒く表示される[単一のXIBファイルは正常に動作します]

そこで、 このチュートリアル を使用してiOS 8アプリの起動ストーリーボードを作成してみました

ただし、アプリを起動すると黒い画面しか表示されません。単一の起動screen.xibファイルは完全に機能しますが、ストーリーボードを使用しようとしても機能しません。

単一のView Controllerのみでストーリーボードを試しましたが、それでも黒い画面が表示されるため、問題はセットアップのストーリーボードファイルにあると考えています。何か案は?

[XCodeバージョン6.4]

編集:だから私はそれが起動画面が黒く表示されることを明確にしたいだけです。アプリの読み込みが完了すると、メインのストーリーボード自体が正しく表示されます

17
Darvish Kamalia

チュートリアルを読んでテストしましたが、次の2つのことは言われていません。

1:UIViewController.storyboardファイルに追加し、それを初期コントローラーとして選択する必要があります。

2:起動画面以外のものを変更する場合は、プロジェクト設定に移動し、「メインインターフェイス」を対応する.storyboardに設定する必要があります。

それが完了したら、ViewControllerクラスへのUIButton/Label/etc接続を編集するだけです。

編集:

明確にするために、UIViewをそれぞれのストーリーボードファイルで選択し、属性インスペクターを開いて初期コントローラーとして設定できます。 「Is Initial Controller」のオプションは中央に向かっています。

22
CraftMcMatt

起動画面でUIImageViewを使用している人向け

属性インスペクターでイメージ名を拡張子なしで使用していることを確認してください。

たとえば、画像ファイルの名前がlauncher.png、イメージ名としてlauncherのみを使用します。

これにより、エディターではイメージが無効(?)として表示されますが、デバイスで実行すると正しく表示されます。

(なぜこのように機能するのか聞かないでください。アップルにお問い合わせください。)

enter image description here

16
Ehtesham Hasan

答えにはどれも必要なすべてのステップがないため、この包括的なソリューションです。

絵コンテ

LaunchScreen.storyboardを作成することから始めます。 Xcode>ファイル>新規>ファイル...>ストーリーボード> LaunchScreen.storyboardを選択し、適切なすべてのターゲットに追加します。
このストーリーボードでは、UIViewControllerタイプの単一のView Controllerを作成します。起動画面に必要な魔法をすべて実行してから、次の手順を実行します。

  1. LaunchScreen.storyboard>ファイルインスペクターを表示> 起動画面として使用
  2. LaunchScreen.storyboard> View Controller>属性インスペクターを表示> 初期View Controller
  3. プロジェクト>一般>展開情報>メインインターフェイス> LaunchScreen
    [iPhone]と[iPad]の繰り返し
  4. プロジェクト>一般>アプリアイコンと起動画像>画面ファイルの起動> LaunchScreen
  5. 適切にセットアップされている場合、Info.plistにはLaunchScreen。storyboard、なしで。storyboardUILaunchStoryboardNameUIMainStoryboardFileプロパティの下:

    <key>UILaunchStoryboardName</key>
    <string>LaunchScreen</string>
    <key>UIMainStoryboardFile</key>
    <string>LaunchScreen</string>
    

注:

  1. これはnotLaunch Screen File> Assetsを使用した古いデバイスのレガシーイメージの使用と互換性がありません。
  2. LaunchScreen.storyboardおよびMain.storyboardに特に注意してください。 1つは起動に使用され、もう1つはアプリのエントリポイントに使用されます。両方ともIs Initial View Controllerを設定する必要があります。
8
SwiftArchitect

起動に使用しているストーリーボードで、その中に存在する非常に単一のView ControllerにIs initial View Controllerのオプションを選択したことを確認してください。

5
Davinder Singh

私は、上記の回答とは異なる何かを必要とする同様の問題を抱えていた可能性があります。

.storyboardファイルに新しい起動画面を作成し、表示されなかった後、アプリの起動時にまだ表示されない新しい.xibファイルを作成しました。

起動画面に表示された画像の一部には、古い.Swiftファイルへのアウトレットコレクションが含まれていることがわかりました。 LaunchScree.xibからこれを削除した後、起動画面は正常に機能しました。

the broken outlet

アウトレットリファレンスのリッテ警告サインに注意してください-> The warning

4
Dom Bryan

エントリポイントを設定し、一般情報をタップして、nibからサイズ変更するようにビューが設定されていることを確認してください。また、一般タブで起動ポイントが設定されていることを確認してください。展開情報。

お役に立てれば

1
MazzaMan

Appleに感謝します!最終的に、別の画像に変更するには、画像だけでなく、View Controllerで実際のUIImageViewを削除する必要があることを発見しました。画像の名前を変更し、さまざまな方法で画像を置き換え、キャッシュを削除し、デバイスからアプリを削除し、構築する前にクリーニングを実行しました。元の画像は、見た限りどこからでも消えていましたが、それでも表示されていました。最後に、View Controllerの上部に新しいUIImageViewを追加しました。これにより、新しい画像が取得されました。次に、古いUIImageViewを削除しましたが、すべて問題ありませんでした。

1
amergin

アプリをローカライズした後、スプラッシュの代わりに黒い画面が表示されました。 LaunchScreen.storyboardのFileインスペクターのLocalizationセクションでは、1つのローカライズに対して1つのティックしかありませんでした。そこで、2番目のローカライズにチェックを追加して、問題を修正しました。

0

解決策は、拡張子pngのない画像名を使用することです。

たとえば、画像ファイルの名前が「img.png」の場合、「img」のみを使用します。

これにより、エディターではイメージが無効(?)として表示されますが、実行時には正しく表示されます。

これは、LaunchScreen.storyboardがAssets.xcassets内の画像のみを受け入れ、Assets.xcassets内の画像を参照する方法が拡張子のないリソースの名前だからです。

拡張子なしで名前を使用することは、その回避策だと思います。

0
kennymuse

展開情報でメインインターフェイスを「メイン」(ストーリーボード名)に正しく設定しましたか?

0
Avijit Nagare