【cocos2dx】iOS7での不具合を解消する。

実機がないので、細かいところはわからないのですが、シミュレータで確認できた

  • 「ステータスバー」の非表示
  • 文字が表示されないところがある

上記2点を解消しました。 とは言っても、下記ブログにそのまま内容が書かれています。 ここから記入する方法はcocos2dx2.1.3(下記ブログは2.1.4)のやり方です。若干違いがありました。

ステータスバーを非表示にする

これは、ブログのやり方そのままです。 iOSフォルダに含まれている「RootViewController」に、一つメソッドを追加するだけです。

[c]

// RootViewController.mm

  • (BOOL)prefersStatusBarHidden { return YES; }

[/c]

文字が表示されないところがある

これは、文字が表示される部分と表示されない部分とがあり、最初はフォントの問題なのかと思いましたが、実はiOSに対応する設定が必要でした。

CCImage.mm内を変更するのですが、これはブログに載っているcocos2dx2.1.4と2.1.3では、やり方が違います。 2.1.3の場合は下記を参考にして下さい。私はこれで上手くいっています。

[c]

//CCImage.mm

//変更前 //CGContextRef context = CGBitmapContextCreate(data, dim.width, dim.height, 8, dim.width * 4, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);

//変更後 //(int)dim.width*4に変更 CGContextRef context = CGBitmapContextCreate(data, dim.width, dim.height, 8, (int)dim.width * 4, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);

//変更前 //[str drawInRect:CGRectMake(0, startH, dim.width, dim.height) withFont:font lineBreakMode:(UILineBreakMode)UILineBreakModeWordWrap alignment:align];

//変更後 [str drawInRect:CGRectMake(0, startH, dim.width, dim.height) withFont:font lineBreakMode:NSLineBreakByWordWrapping alignment:(NSTextAlignment)align];

[/c]

最後に

おそらくこれ以外は、特にcocos2dxプロジェクトで直す所はないかと思います。 ただ、何があるのかわからないので、ちゃんと実機で確認をしたほうがいいと思います。

私は手元にiOS7の端末がないので、これをどう確認しようか迷っています。iOS6の端末はまだ残しておきたい。どうしよう。

公式でもこの問題は対応しているみたいで、こちらにも情報が載っています。 おそらくcocos2xの最新バージョンでは、このような問題は解決されているでしょう。一度参考にしてみてください。 Fixes for iOS7 and Xcode5 by ricardoquesada · Pull Request #2873 · cocos2d/cocos2d-x · GitHub