自分が使用しているアプリのRetinaディスプレイ対応状況(2)
Retinaディスプレイモデルにもだいぶ慣れてきたのですが、ほとんどの機能は問題なく使えるのに、特定の機能だけで問題が出るアプリというのがいくつかあります。
特に気になるのが、プログラマーとしてメインの環境であるXcode。ツールバー上のステータスウインドウ*1の表示がRetina解像度になっていないのは、実使用上は支障がないのですが、Retina解像度に起因すると思われるインターフェースの座標ズレが見られます。
私が遭遇したのは、Build Phases設定のCompile Sourcesでのオプション設定ウインドウ。ここにオプション指定を書き込むことで、ファイルごとのコンパイルオプションを設定できるのですが*2、設定を行おうと思ってウインドウを呼び出す(設定したいソースファイル名をダブルクリック)操作をしても、Xcodeのウインドウから入力フォーカスが外れるだけで、設定ウインドウが現れません。えっ? と思いつつ、滅多に使わないところなので使い方が間違っているのかと色々調べるも、間違っていないのでしばし悩むことに。その内、その状態でMission Controlを使うと、小さなウインドウがポツンと存在していることに気がつきました(図)。
マウスカーソルを表示されているウインドウ付近に持っていくと、図の様にXcodeのウインドウと、小さなウインドウが一括りでMission Controlに認識されているのがわかります。つまり、この小さなウインドウはXcodeの出しているものということです。図におけるXcodeウインドウと小ウインドウの配置は、実際の配置と同比率であると推測できます。つまり、本来はダブルクリックしたファイル名のすぐ近く*3に現れないといけないのに、離れた位置に現れてしまい、それが画面からはみ出てしまっているために見つけられなかったわけです。これは、低解像度でXcodeを実行する事で回避できますが、一時的にXcodeのウインドウをすごく小さくし、右上にスペースができるように画面の左下に移動することで、なんとか画面内に小ウインドウを出すことでも対処可能でした。この操作も、開発中に頻繁に行うことではないので、一時的に回避策をとればいいので、まあ我慢できます。
問題なのは、既存のプロジェクトを読み込もうとすると、ステータスウインドウの表示がLoadingのままになり、マウスカーソルがレインボーカーソルに変わってXcodeの操作ができなくなることです。Retinaディスプレイモデル購入以前に作成したプロジェクトでも、購入後に新規作成したプロジェクトでも(閉じてから再度読み込もうとすると)発生します。ただし、必ず発生するわけではなく、しばらく作業をして閉じた後、また開こうとすると突然なったりします。一度その状態になったプロジェクトは、何度(Xcodeを強制終了してから再起動して)読み込み直してもダメです。何を行うとそうなるのか突き止め切れていませんが、回避方法は見つけました。一つは、Xcodeを低解像度で開く方法。この状態では、ダメになったプロジェクトが普通に開けます。ただし、エディターウインドウも含めてXcode全体が低解像度になってしまうので、開発効率と意欲が下がります
もう一つの方法は、Finder上でダメになったプロジェクトファイルを選択します。プロジェクトファイルは“パッケージ”なので、コンテキストメニューの「パッケージの内容を表示」で中身を表示します。中に「project.xcworkspace」というパッケージファイルがあるので、さらに「パッケージの内容を表示」します。「xcuserdata」というフォルダーがあるので、それを開きます。そうすると、「USERNAME.xcuserdatad」(USERNAMEは自分のユーザー名)というフォルダーがあるはずですので、さらに開きます。「UserInterfaceState.xcuserstate」というファイルがあるはずなので、削除します。その後、Xcodeを起動すると、無事に読み込めました。このファイルは、Xcode使用中に常に書き換えられていますが、内容は名前の通りにユーザーインターフェースの使用状況のみなので、開いていたファイルやウインドウの状態が初期化されてしまいますが、プロジェクトの設定が消えてしまうことはありません。ユーザーインターフェースの状況ということで、このファイルの読み書き周りでRetina解像度の扱い方を間違えているのではと思いますが、次リリースで直っていることを祈るばかりです*4。
もう一つ、開発ツールというか、開発に使っているグラフィックツールで、すごく微妙な不具合が出ています。このツール、名前をSketchと言うドロー系のグラフィックツールです。
Sketchは、ベジェパスや矩形や円などのオブジェクトを用いて画像を描画するドロー系のツールですが、ドキュメント上にピクセル単位で領域を設定し、その範囲をビットマップ画像にラスターライズして(PNGなどの任意のフォーマットで)出力する機能を備えています。Adobe Illustratorの様な高機能ツールではありませんが、アプリのUIパーツなどを手軽に作成するのにはコストパフォーマンスに優れたソフトだと思います。何よりも、iOSアプリの開発に向いていると思う点は、ラスターライズによる切り出しの際に、設定した大きさの通常解像度用の画像と共に、(チェックボックス一つの設定で)Retina解像度用の(名前のお尻に@2xを付けた)画像も一緒に作成してくれる点です(下図参照。「Export @2x version」チェックボックス)。切り出す領域は、一つのドキュメント上に複数設定でき、まとめて切り出す事も可能なので、面倒な作業がかなり軽減されます。
で、私もこのソフトの全てを使いこなしているわけではありませんが、私が使っている機能の範囲で、Retinaディスプレイ上で動かしていることによる問題は見つかりませんでした。というよりも、MBPのRetinaディスプレイモデルを購入してから本格的に使い始めたので、従来のMac環境ではほとんど使っていません。
それで、レイアウトが崩れたりすることも無く、綺麗な表示を堪能していたのですが、先に説明した切り出しを行うと、望んだ大きさの画像が作ってもらえないことに気づきました。具体的には、例えば(標準解像度で)32×32のボタンを作ったつもりが、64×64で出力されます。Retina解像度版に至っては128×128になります。なんだこりゃとか思いながら、@2x作成の設定をオン/オフしたりしてみましたが、状態は変わらず。
で、出力される大きさがちょうど縦横とも二倍ということは、まさかRetinaディスプレイモデルで使っているからか? と考えて低解像度で実行してみたところ、指定した通りの大きさで出力されました。うーん、まあ、理屈としてはわからなくはないんですけどね。当然、領域設定を半分にしてやれば、Retina解像度で使っていても望んだサイズで出力されるのですが、それは気持ち悪いし、バージョンアップがあったら全て指定しなおさないといけないだろうと思われるのでそれは避けることに。
とりあえず、他の機能は問題ないみたいなので、通常はRetina解像度で使用して、完成に近づいてきたら低解像度で使う様にすることにしました。
- iTunesにもあるアプリケーションのウインドウ上部のツールバー中央部の、プログレスバーが出たりする領域のこと [↩]
- 例えば、ARCオンのプロジェクトで、特定のソースファイルのみARCをオフにするとかもここで設定できる [↩]
- プルダウンメニューのように、ファイル名のすぐ下に現れるのが本来の動作 [↩]
- でも、今簡単に検索してみた限りでは、この件を話題にしている人は少ない感じ。対処法も、低解像度で開くので満足しているみたい。話題にしている人が少ないのは、開発機としてRetinaディスプレイモデルを購入した人が少ないのか、あるいはMac OS XやiOSの次期バージョン用のXcodeのベータ版を使っていて問題が出ていないのか。でも、ゼロでは無いみたい [↩]
コメント無し
RSS feed for comments on this post.