質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.51%

  • Xcode

    4736questions

    Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

  • iOS

    4491questions

    iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

  • Objective-C

    1240questions

    Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

[xcode] Viewで透明色を設定しても真っ黒の画面が表示される

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 1,920

u.-_-.u

score 51

初投稿になります。
至らない点、多々あると思いますが、今後のために指摘して頂ければ幸いです。
xcodeやiPhone/iPadについてはほぼ知らない状態だと思ってください。

[目的]
android/iOSでPush通知の実装を行っている。
しかし、Push通知受信メッセージの押下時処理が両OSで異なるため、
iOS版でメッセージ押下時に起動する透明なViewのアプリを表示したい。
(ここで言う透明というのはホーム画面が表示されたままのこと)

つまり、アプリが起動していることをユーザに気づかれないようにしたい。
(透明View表示直後にアプリを終了させることで実現可能と考えている)

[内容]
透明Viewの作成を行ってみたものの、真っ黒な画面が表示されてしまう。
・xcodeでsingle View Applicationを選びプロジェクトを新規作成
ソースはまったく変更せずMain.storyboardで
BackgroundColorをClearColorにしてみたり
Alphaを0にしてみたが、真っ黒
・下記サイトを参考にしてソースでViewを作成してみたが、真っ黒

iDEACLOUD
【Xcode】動的に追加したビューの背景色を透過させる
https://ideacloud.co.jp/dev/view_color_alpha.html

明日中に解決したいと考えております。

以上です。
宜しくお願い致します。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

私も興味があったので試してみました。
結果から先に書きますと期待されている内容を実現出来ませんでした。

ViewController内のUIViewのBackgroundカラーをクリアにしてもUIWindowの背景色が表示されます。
それならということでUIWindowの背景色もクリアにしましたが、おそらくUIApplicationの物と思われる黒い背景色が見えてきました。
UIApplicationはBackgroundプロパティがないため色を変更することは出来ません。
以上の過程で出来ないと判断しました。

また仮に出来たとしてもアップルの審査が通らない可能性があります。
一瞬でも表示したくないということでしたら、難しいですが一瞬表示しても良いのであれば表示されたタイミングでアプリを終了するコードを実装するだけでも良いかもしれません。(アップルの審査でアプリを終了させる処理を実装したらリジェクトされた経験があるのでオススメはしませんが。)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/01/20 13:07 編集

    回答ありがとうございます。
    回答を元に調査した結果を載せておきます。
    閲覧しに来た方の助けになれば幸いです。
    また、調査する足掛かりをくださった
    YasuhiroMiyake様をベストアンサーとさせて頂きます。

    -以下調査内容-
    ■下記ホームページにてsingle View Applicationの構造が載っていました。
    Hatena Blog
    「iOS アプリの構造がどのようになっているか紐解いてみる」
    http://glassonion.hatenablog.com/entry/20120507/1336320038
    >UIApplication オブジェクトの上に UIWindow オブジェクト、
    >UIView オブジェクトの順に重なっていてユーザからは
    >UIView オブジェクトだけが見えるようになっています。
    リンク先ページの上から1/3程進んだ所に記載あります。

    ■UIView / UIWindow共に透過出来ることを以下の検証により確認しました。
    1.UIView、UIWindow色の変更
    1-1.プロジェクトのGeneral→Deployment Info→Main Interface 削除
     (これによりMain.storyboardを表示させない)
    1-2.ソースにて開始位置0,50、サイズwidth,height-50の青色UIViewの作成
    1-3.ソースにて開始位置0,50、サイズwidth,height-50の赤色にUIWindowを変更
    アプリ画面の色が画面下側から青、赤、黒の3つに分かれていることを確認しました。
    (UIViewの描画開始位置はUIWindowが起点になるようですね)

    2.UIViewの透明化
    2-1.上記1-2で作成したUIViewを透明化
      (RGB指定でのalpha/UIColor指定でのclearColor)
    アプリ画面の色が画面下側から赤、黒の2つに分かれていることを確認しました。

    3.UIWindowの透明化
    3-1.上記2-1の状態から1-3で変更したUIWindowを透明化
      (RGB指定でのalpha/UIColor指定でのclearColor)
    アプリ画面の色が真っ黒になったことを確認しました。

    ■AppleDeveloperのリファレンスから
      UIApplicationは透過出来ないことを確認しました。

    AppDeveloperのリファレンスURL
    「UIView」
    https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/#//apple_ref/occ/instp/UIView/backgroundColor

    「UIWindow」
    https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIWindow_Class/

    「UIApplicaton」
    https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplication_Class/

    上記3つのリファレンスを参照すると、
    NSObject→UIResponder→UIApplication
    NSObject→UIResponder→UIView→UIWindow
    という親子関係が確認出来ます。

    背景色を設定出来るbackgroundColorはUIViewで定義されているため、
    UIViewとその子のUIWindowで使用出来ます。
    しかし、UIApplicationではbackgroundColor、
    その他背景色設定のプロパティが存在しないため
    UIView、UIWindowは背景色を設定でき、UIApplicationは設定出来ません。

    ■調査結果結論
    今回の調査結果を全て踏まえた結果、
    YasuhiroMiyake様、u39ueda様と同様に、
    完全に透明なアプリは作成できないという結論に至りました。

    キャンセル

+1

まず、どんなに透過させようとしてもiOSのHOME画面を表示するようなアプリは作成できません。

ただし

アプリが起動していることをユーザに気づかれないようにしたい。

を実現するなら"サイレントPUSH通知"が役に立つかもしれません。(具体的に何の処理を行おうとしているのかによりますが)
これを使えばプッシュ通知受信をトリガにして(画面を出さずに)通信処理が行えます。

詳しくは以下のサイトなどを参照してください。
http://dev.classmethod.jp/references/ios7-apns-background/

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/01/20 13:00

    回答、および打開策の提案ありがとうございます。
    サイレントPush通知による機能の実現について、調査・検討してみます。
    サイレントPush通知の調査結果も記載しようと思いましたが、
    本件とは趣旨がずれてしまうため、割愛させて頂きます。

    キャンセル

同じタグがついた質問を見る

  • Xcode

    4736questions

    Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

  • iOS

    4491questions

    iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

  • Objective-C

    1240questions

    Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。