ラベル iPhone の投稿を表示しています。 すべての投稿を表示
ラベル iPhone の投稿を表示しています。 すべての投稿を表示

2012年12月4日火曜日

X-BASIC for iOS

長らく開発していた、iPad/iPod touch/iPhone向けBASIC言語、「X-BASIC for iOS」がようやく発売できました。で、その宣伝漫画なども作ってみたので公開。
転載可です。




 

興味の湧いた方は、是非ご購入を<m(__)m>。

追伸(2013/01/01)
最新版V1.50が公開されました。
外部アプリからのファイル取り込み機能、電子メール送信機能などが追加されました。

追伸(2013/01/22)
V1.60が公開されました。
画面描画が大幅に高速化されました。その他機能も追加されています。

追伸(2013/01/24)
V1.70を審査に出しました。
バグ修正と、いくつか機能追加をしています。

追伸(2013/01/31)
V1.70は拒絶されました。
BASICプログラムを外部から入れられるようになってると、やはりはじかれるようです。
インポート機能を削除したV1.71を作成中です。

追伸(2013/02/01)
V1.71を再審査に出しました。

追伸(2013/02/08)
今後X-BASIC for iOSのサポートは専用ページに移行します。

2012年10月12日金曜日

iOS6での画面対応について

iOS6での画面回転対応に非常に苦労したのでここに記録する。
iOS5以前にも対応するなら、従来の回転処理も残しながら、
新たに以下のメソッドを追加する。
細かい話は他のサイトで調べてもらうとして、ここではやり方だけ列記。

(1)基本的に、全てのUIViewControllerに以下の処理を実装する

- (NSUInteger)supportedInterfaceOrientations
// 回転を許可する方向を返す
{
#if 0 // リターン値はこの中から選択
    typedef NS_OPTIONS(NSUInteger, UIInterfaceOrientationMask) {
        UIInterfaceOrientationMaskPortrait,
        UIInterfaceOrientationMaskLandscapeLeft,
        UIInterfaceOrientationMaskLandscapeRight,
        UIInterfaceOrientationMaskPortraitUpsideDown,
        UIInterfaceOrientationMaskLandscape,
        UIInterfaceOrientationMaskAll,
        UIInterfaceOrientationMaskAllButUpsideDown,
    };
#endif
    return UIInterfaceOrientationMaskAll;
}

- (BOOL)shouldAutorotate
// 回転を許可するかどうかを返す
{
    return YES; // NOなら回転させない
}


もし個別のUIViewControllerに実装するのが面倒なら、以下の実装を入れればよい。
(各UIViewControllerの回転時にここが呼び出される。 )

-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
    return UIInterfaceOrientationMaskAll;
}



(2)[window addSubview:navigationController.view];
ではなく
    [window setRootViewController:navigationController];
に変更する。

ここまででiPadは回転するようになる。iPhone/iPod touchでもPortraitUpsideDown以外は回転するようになるが、PortraitUpsideDownだけが回転してくれない。



(3)UINavigationControllerの中にも上記回転制御を入れる。そのためにサブクラスを作る。


@interface NavigationControllerForiOS6 : UINavigationController
@end

@implementation NavigationControllerForiOS6
- (NSUInteger)supportedInterfaceOrientations
{

    return UIInterfaceOrientationMaskAll;
}

- (BOOL)shouldAutorotate
{
    return YES;
}
@end

UINavigationControllerを使っているところを全て、このNavigationControllerForiOS6
に変更する。



・・・

となる。
(3)がわかりにくいところ。(2)まででiPadまで動いてしまうので見逃しがち。

しかし、アップルはなんでこんな重要な、しかも非常によく使われている部分の仕様を変えたりするんだろうか。その上、変えてなにか良くなっったりしているとも思えないし。
まったく。