So-net無料ブログ作成

アプリ開発(16) モーダル画面の実装②  [iPadアプリ開発]

モーダル画面の実装には2種類があります。モーダル画面とは親画面から子画面を表示して、その子画面を表示している間、親画面は触る事ができないようになっている画面です。iPadでは全画面表示でなく小さい画面で表示する事ができます。iphoneでは全画面表示になるとのこと。

1つは、モーダル画面の方で「元の画面に戻る」処理を記述する方法。2つ目は呼び出し元の「元の画面の方でモーダル画面を閉じる」処理を記述方法です。2つ目の方法は「モーダル画面で設定した値を親画面に受け渡しを行うとき」「親画面の制御が必要な時」に必要な実装方法です。

今回は、呼び出し元の「元の画面の方でモーダル画面を閉じる」処理を記述方法です。
delegate/デリゲートを使って実装します!
delegate_modal.png


すっごい参考になったサイト

ビュー・コントローラ間でのデータの受け渡し、その2「元のページへデータを返す」




Modal View Controller Example – Part 2

nice!(0)  コメント(0) 

アプリ開発(15) モーダル画面の実装①  [iPadアプリ開発]

モーダル画面の実装には2種類があります。モーダル画面とは親画面から子画面を表示して、その子画面を表示している間、親画面は触る事ができないようになっている画面です。iPadでは全画面表示でなく小さい画面で表示する事ができます。iphoneでは全画面表示になるとのこと。

1つは、モーダル画面の方で「元の画面に戻る」処理を記述する方法。2つ目は呼び出し元の「元の画面の方でモーダル画面を閉じる」処理を記述方法です。2つ目の方法は「モーダル画面で設定した値を親画面に受け渡しを行うとき」「親画面の制御が必要な時」に必要な実装方法です。

今回は、モーダル画面の方から「元の画面に戻る」処理を制御する方法です。

まずは呼出し元のコード。モーダル画面を呼び出します。
// ModalViewController生成
    ModalViewController_iPad *modalViewController;
    modalViewController = [[ModalViewController_iPad alloc]
          initWithNibName:@"ModalViewController"
          bundle:nil];
    
    modalViewController.modalPresentationStyle = UIModalPresentationFormSheet;  // 画面中央に配置
    modalViewController.view.superview.frame = CGRectMake(0, 0, 400, 750);  // サイズ指定
    modalViewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical; // 下から上へ出るスタイル
    // モーダルを表示
    [self presentModalViewController:modalViewController animated:YES];


モーダル画面のViewControllerでのコード。

// 閉じるボタン処理
- (void)modalCloseAction:(UIButton*)sender
{
    // モーダル画面を消す
    [self dismissModalViewControllerAnimated:YES]; //これだけ!
    
}

nice!(0)  コメント(0) 

アプリ開発(14) UIImageViewで複数画像のアニメーションとUIButton [iPadアプリ開発]

今日は「画像をタッチすると複数画像のアニメーションを開始する」に取り組みました。
実装方針
メインの画面に部品となるUIButtonパーツをUIViewを継承したクラスで生成して<下記、Aブロック>、そのUIButtonパーツをタッチする<下記、Bブロック>と、「複数画像を配列に格納したUIImageViewによるアニメーションを開始」する。その時、NSTimerを開始して、アニメーションの終了を検知するためのメソッドを作成する。<下記Cブロック>その理由は、UIImageViewには通常アニメーション終了後処理を記述するためのメソッドが用意されていないためである。

<Aブロック>
まず、「UIViewを継承したクラスを作成」します。
このクラスは、親となるUIViewControllerから呼び出すために用います。


- (id)initWithFrame:(CGRect)frame:(NSInteger)intButton {
    appDelegate =(UglyDucklingAppDelegate *)
                   [[UIApplication sharedApplication] delegate];
    if ((self = [super initWithFrame:frame])) {
        // ボタンのインスタンス作成
        CGRect frame = appDelegate.glbFrame;
        btn = [[[UIButton alloc] initWithFrame:frame] autorelease];
        // ボタンのイメージ
        NSString *btnImagePath = [[NSBundle mainBundle]  
                  pathForResource:appDelegate.glbViewImageName ofType:@"png"];

        UIImage *btnImage = [[UIImage alloc] initWithContentsOfFile:btnImagePath];

        [btn setBackgroundImage:btnImage forState:UIControlStateNormal];
        [btn setTag:intButton];
        [btnImage release];
        [btn setAdjustsImageWhenHighlighted:NO];
        // ボタン押した時の設定
        [btn addTarget:self action:@selector(btn1_click:) 
                 forControlEvents:UIControlEventTouchUpInside];
        [self addSubview:btn];
        //[btn release];
        
    }
    return self;
}

<Bブロック>
/***************************************************
    ボタン押下処理
    UIImageView 
 ***************************************************/        
-(void)btn1_click: (id)sender{
    if (fileName ==@"test") {
        //btn.hidden=true;
        btn.alpha=0.0;
        animationView = [[UIImageView alloc] 
                initWithFrame:CGRectMake(0,0,647,347)];
        NSArray             *images;
        images = [[NSArray alloc] initWithObjects:
        [UIImage imageNamed:@"test1.png"],
        [UIImage imageNamed:@"test2.png"],
        [UIImage imageNamed:@"test3.png"],
        [UIImage imageNamed:@"test4.png"],
        [UIImage imageNamed:@"test5.png"],
        nil];

         // アニメーション用の画像をNSArrayで設定
        animationView.image=[UIImage imageNamed:@"swan1.png"];
        animationView.animationImages = images;
        animationView.animationDuration = 1.0;
        animationView.animationRepeatCount=5;
        [self addSubview:animationView];
        [animationView startAnimating];
        self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self		
               selector:@selector(onTimer:) userInfo:nil repeats:NO];
    }
    
}

<Cブロック>
/******************************
 アニメーション
 *****************************/
- (void)onTimer:(NSTimer *)theTimer {
    if (animationView.isAnimating) {
        self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self		
            selector:@selector(onTimer:) userInfo:nil repeats:NO];
    }else{
        [self.timer invalidate];
        btn.alpha=1.0;
        [animationView stopAnimating];
        animationView.alpha =0.0;
        [animationView release];
    }
    
}

この件について「私も実装したいからもっと詳しく知りたい!」って言う人はコメントを残してください。お役に立るならお手伝いします。
nice!(0)  コメント(0) 

【ちょっと一息】海外ドラマで英語を楽しむゾ<The Office> [ネイティブ英語表現]

The Officeという海外ドラマを最近HuluでSteveと見ています。
The Office (US TV series)って元はBBCで放映されていた「The Office」から派生してリメイクされたコメディードラマです。「24」「プリズンブレーク」みたいなメジャー度は日本ではないように感じますが、このドラマ”かなり変で痛すぎるキャラクターとストーリーばかり”なんだけど、やみつきになってしまうドラマなんです。BBCのThe Officeはエピソード数全14話と少ないのですが、US TV Seriesはシーズン8まであります。Huluではシーズン3までですが今後拡大されることに期待してます。(このドラマは人種を取り扱ったブラックジョークが頻出するので、気分を害する可能性のある人には絶対におすすめしません。私もあまりそういうジョークは好きになれないのですが、アホな上司とおバカな仕事ぶりを見ていると、仕事のストレスが和らぐ気がしてしまう、不思議な意外な効果があるんです。

HuluのWebサイト内に「The Office」の紹介記事とプレビュー動画(90秒)がありました。興味を引かれた方は見てみてはどうでしょうか。http://www.hulu.jp/the-office


まず始めに人物紹介。
Michael Scott:マイケル by Steve Carell 信じられない事に、正式な「支店長」。このすっごく非常識な行動言動満載のキャラクターを見ていると、見ている方が”痛い”。でも見ずにはいられない、このドラマの中心人物。現実世界の嫌な上司や仕事を見事吹き飛ばしてしまうほどの強烈キャラクター。(この俳優はすごいと思う。)
Pam Beesly:パム 受付嬢。長年婚約者がいるが未だに結婚に至っていない。婚約者以外にJimのことを弟のようにかわいがっているが、恋心は芽生えていない?!
Jim Halpert:ジム 営業員。常識人。パムの事を姉のように友達として接しているが恋心が芽生える?!ドワイトとのやり取りが多く、ドワイトとは水と油の関係としてなくてはならない存在で目が離せない。
Dwight Schrute:ドワイト 自称「支店長補佐」。支店長補佐の肩書きをMichaelとの間だけで取り交わしている。実際に正式な人事発令がでているようではない。本人は他の従業員も認識していると勘違いをしている。他の従業員はドワイトのおバカで行き過ぎた行動や偉そうな言動を迷惑がったり馬鹿にする事が多く、そう言った時のやり取りは必見。
Toby:トビー HR=人事部のメンバー。常識人。離婚をしたばかりで、Michaelにネタに使われる事が時々ある。またMichaelの暴走を止めなくてはならない事も多く、損なポジションである。じつはこの役者さん(PAUL LIEBERSTEIN)この番組のExecutive Producerの一人でもあるんだって。





dada_hiro.jpgではSteveとAkiからのEnglish Selection from The Office Quotesです。
「The Office」の「おバカさ加減」が伝わるかな。。







<シーズン1/ Health Care>
Dwight Schrute Through simple concentration I can both raise and lower my cholesterol.
Pam Beesly: Why would you raise your cholesterol?
Dwight Schrute: So I can lower it.

このドワイトの発言、ドワイトらしいでしょ?

<シーズン2/Sexual Harassment>
これはひどい発言!!って思ったんだけど、実はMichaelの言動のHRの部分って現実社会では的を得てるんだよね?!
Michael Scott Toby is in HR, which technically means he works for corporate, so he's really not a part of our family. Also, he's divorced, so he's really not a part of his family.

nice!(1)  コメント(0) 

アプリ開発(13) UIView & UIImageViewでAnimation! [iPadアプリ開発]

私の唯一の成果物「ひらがなアプリ」でもUIViewのアニメーションは使っていたのですが、今日は改めてUIViewを使ったアニメーションをブログで取り扱いたいと思いました。
UIViewアニメーションに関する素晴らしいブログ記事はいっぱいあって、開発の手助けになるものばかりでした。それをブックマークにしたブログは以下です。

[iOS SDK]UIViewで手軽にアニメーションを実行する方法

UIView - iPhoneアプリ開発の虎の巻

でも、私なりのUIImageViewを使ったUIViewのアニメーションについても書きたいと思います。というのも現在作成中のアプリ(内容はごめんなさい。詳細はまだ明かせません[たらーっ(汗)]
動くコードが一度できてしまうと、なんて事もないとおもうUIViewアニメーションですが、今回はてこずってしまいました[たらーっ(汗)]





まず最初に「表示位置を拡大画像内で一定時間で移動する
アニメーション」について
UIviewAnimation.png

    UIImageView     *uiIV;
    UIImage         *image;
    NSString *str= [NSString stringWithFormat:@"%d",appDelegate.cnt];
    NSString *imageName = [NSString stringWithFormat:@"bg%@",str];
    CGRect rect = CGRectMake(0.0f, 0.0f, 1400.0f, 2000.0f);
    uiIV = [[UIImageView alloc] initWithFrame:rect];     //拡大した画像をUIImageViewに設定
    [uiIV setImage:[UIImage imageNamed:imageName]];

    uiIV.opaque=YES;                // explicitly opaque for performance
    [self.view addSubview:uiIV];
    //背景画像のアニメーション処理        
    [UIView beginAnimations:nil context:nil];    // 条件指定開始
    [UIView setAnimationDuration:10.0];         // 10秒かけてアニメーションを終了させる
    [UIView setAnimationDelay:2.0];                // 2秒後にアニメーションを開始する
    [UIView setAnimationRepeatCount:2.0];    // アニメーションを2回繰り返す
    [UIView setAnimationCurve:UIViewAnimationCurveLinear];  // アニメーションは一定速度
    uiIV.center = CGPointMake(200, 200);    // 終了位置を200,200の位置に指定する 
    [UIView commitAnimations];                      // アニメーション開始!
    [uiIV release];




つぎには「一定時間で画像をズームアウトし画面全体を表示する
アニメーション」について

初期表示時は画像の一部分にフォーカスがあたっているけれども、指定した時間で画像をズームアウトし画面全体を表示する
アニメーションについてソースコードをのせました。
//背景画像読み込み
    UIImageView     *uiIV;
    UIImage         *image;
   
    NSString *str= [NSString stringWithFormat:@"%d",appDelegate.cnt];
    NSString *imageName = [NSString stringWithFormat:@"bg%@",str];
    image = [UIImage imageNamed:imageName];
    uiIV = [[UIImageView alloc] initWithImage:image];
    uiIV.opaque=YES;
    [self.view addSubview:uiIV];

    //背景画像のアニメーション処理        
    uiIV.transform=CGAffineTransformMakeScale(3.0, 3.0);        
    [UIView beginAnimations:nil context:nil];    // 条件指定開始
    [UIView setAnimationDuration:10.0];         // 10秒かけてアニメーションを終了させる
    [UIView setAnimationDelay:2.0];                // 2秒後にアニメーションを開始する
    [UIView setAnimationRepeatCount:1.0];    // アニメーションを1回繰り返す
    [UIView setAnimationCurve:UIViewAnimationCurveLinear];  // アニメーションは一定速度
    uiIV.transform=CGAffineTransformMakeScale(1.0, 1.0);
    [UIView commitAnimations];                      // アニメーション開始!
    [uiIV release];


もし役に立ったら嬉しいです[るんるん]
このアプリの制作が完了してApp Storeにあがりましたら実際のアプリの動きを動画にしてアップデートしたいと思います。


nice!(0)  コメント(0) 

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。