SlideShare uma empresa Scribd logo
1 de 91
iPhoneアプリ作成 勉強会

 ⑭iPhoneアプリを作ってみよ
    う!(超初心者向け)
動作環境
•  Mac OS X 10.7 Lion
•  xcode 4.3.1
はじめに
•  iPhoneアプリを作ってみよう!
•  超初心者向け!難しいことは置いといて、あそ
   んでみよう!
注意事項
•  雑に教えます。難しいこと、細かいことは
   大人になってから覚えましょう!
•  適切なやり方ではなく、簡単なやり方を
   教えちゃう場合もあるかもしれませ
   ん。!でもまあ、ちっちゃいことは気に
   しないで、まずは動かしてみましょう!
写真素材について①
•  写真素材については、小林真琴(愛称:まっ
   こり)様から提供していただいています。
•  今回の勉強会の資料として提供いただいてい
   ますので、再配布やアプリ等での使用はでき
   ません。
•  フリー素材ではありませんので、ご注意くだ
   さい。
•  みなさん、応援してあげてください!(アプ
   リや、Web、バナー広告等のモデルの仕事お
   待ちしています!)
写真素材について②
まっこり(小林真琴)	
  
	
  
フリーでモデルをやっています。	
  
秋田出身のまっこりです♪	
  	
  
	
  
みなさんに笑顔や感動を与えられる	
  
モデルを目指しています! 	
  
	
  
自分だけの新しい世界観を生み出し、	
  
日々成長して行こうと思います。	
  
	
  
応援よろしくお願いします(^-­‐^)/	
  
	
  
BLOG:	
  
http://blog.crooz.jp/chery2	
  
Twitter:	
  
https://twitter.com/#!/maccori_1	
  
Facebook:	
  
https://www.facebook.com/profile.php?id=100003547711446
もくじ
•    まずはプロジェクトを作ろう
•    メイン画面を作ろう
•    画像を変えよう
•    ヘルプ画面を作ろう
•    ボタンをつかおう
•    アニメーションに挑戦
まずはプロジェクトを作ろう
•  showというプロジェクトを作ろう
やってみよう
•  いらないファイルを削除しよう
•  ストーリーボードもからにしよう
やってみよう
•  TabBarControllerを
   追加しよう
できた!
•  タブがいれかわる!




               show_01.zip
やってみよう
•  リソースを追加しよう!
やってみよう
•  下の画面を削除して、
   かわりに、
   TableViewController
   を配置しよう。
•  TabBarViewControll
   erからRelationship
   のセグウェイをつな
   げよう
やってみよう
•  タブバーのアイコンと
   名前を変えよう
•  それぞれ、右のよう
   にしてみよう
こんなかんじ
メイン画面を作ろう
•  SwipeGestureReco
   gnizerを画面に2個
   置こう
やってみよう
•  それぞれ、パラメー
   タを変更しよう
やってみよう
•  File->New->Fileをえらぼう
やってみよう
•  Objective-C classを
   えらぼう
やってみよう
•  MainViewControllerをえらぼう
やってみよう
•  保存先はそのままで
   OK
やってみよう
•  右の画面みたいに
   なったら成功!
ファイルの説明
•  プログラムの書いてあるファイルを、ソー
   スファイルといいます。
•  Objective-Cのプログラムは、2個に分か
   れています。
•  xxx.hをヘッダファイルといいます。
•  ヘッダファイルには、本体の定義情報を書
   きます。
ソースと画面をつなげる
•  ソースファイルを作っただけでは、画面と
   つながりません。
•  ストーリーボード上で、設定をします。
やってみよう
•  メイン画面の下のと
   この黄色いのを選ぼ
   う
•  プロパティから
   MainViewController
   を設定しよう
ちょっとプログラム
•  MainViewControllerに以下を追加してみよ
   う!

- (void)viewDidLoad
{
    [super viewDidLoad];
       // Do any additional setup after loading
the view.
    NSLog(@"てすと");
}
できた!
•  XCODEに字が出た!




                 show_02.zip
かいせつ
•  viewDidLoadというのは、画面がロード
   された後に呼ばれる関数です。
•  NSLogというのは、文字をログに表示す
   る命令です。
やってみよう
•  ストーリーボードに
   して、右上のジェント
   ルメンをおそう
•  画面が分割されて、
   右側にヘッダファイ
   ルが出るのを確認
やってみよう
•  プロパティにRightを設定した
   SwipeGestureRecognizerを、
•  controlをおしながら、ヘッダファイルにドラッグし
   よう
•  吹き出しが出るので、間違えないように設定しよう
やってみよう
•  ヘッダとソースにプロ
   グラムがついかされ
   る!
やってみよう
•  ソースを変更してみよう

- (IBAction)swipeRight:(id)sender {
    NSLog(@"シュッ!");
}
できた!
•  みぎにやるとシュッてなる!




                   show_03.zip
注意
•  一度たしたプログラムは、ストーリーボー
   ド上で消しても消えない
•  二回足すと、プログラムも2個足される
やってみよう
•  ひだりがわもやってみよう!
画像を変えよう
•  まず、UIImageViewを画面に配置をしま
   す。
•  次に、プログラムで使えるようにします。
•  ジェスチャーにあわせて、画像を変更しま
   す。
やってみよう
•  背景画像をおこう
•  その上に、
   UIImageViewをおこ
   う
やってみよう
•  imageViewからヘッ
   ダファイルにcontrol
   をおしながらドラッ
   グしよう
•  mainImageViewとい
   うなまえにしよう
ActionとOutlet
•  Actionは、ボタンを押す、スワイプをす
   るなどのイベントに対応しています
•  Outletは、UIImageView,UILabelなど部
   品そのものに対応しています。
やってみよう
- (IBAction)swipeRight:(id)sender {
    self.mainImageView.image = [UIImage
imageNamed:@"makoto_p_01.png"];
    NSLog(@"シュッ!(みぎ)");
}

- (IBAction)swipeLeft:(id)sender {
    self.mainImageView.image = [UIImage
imageNamed:@"makoto_p_02.png"];
       NSLog(@"シュッ!(ひだり)");
}
メモ
•  Outletで追加した部品は、
   self.mainImageViewみたいな感じでプログ
   ラムで使えるようになります。
•  self.mainImageView.image = [UIImage
   imageNamed:@"makoto_p_01.png"];
•  これは、self.mainImageViewのimage
   に画像を設定するみたいな意味!
できた!
•  シュッてしたら絵が出る!




                  show_04.zip
ヘルプ画面を作ろう
•  TableViewをつかって、
   ヘルプ画面を作ってみ
   よう!
Static Cellsにしよう
•  TableViewには2種類
   あって、プログラムか
   ら内容を設定する場合
   は、
   DynamicPrototypes
•  を使います。
•  ストーリーボードから
   設定する場合は、
   StaticCellsを使います。
•  今回は、StaticCellsに
   します!
•  Sectionsも2に変更し
   ます。
Sectionのプロパティ
•  Sectionのプロパティ
   を変更します。
•  Rowsは、行数です。
•  また、行の高さも変
   更しましょう
できた!
•  おしたらあおくなるのが、
   微妙かなあ・・・。




                  show_05.zip
やってみよう
•  SelectionをNoneに
   すると、あおくなら
   なくなる!
やってみよう
•  TableViewの
   Scrolling Enabledを
   OFFにすると、スク
   ロールしなくなる!
やってみよう
•  右の画面を参考に、
   ラベル等を置いて、
   ヘルプ画面を作ろ
   う!
できた!
•  まあまあ、いいかんじ!




                 show_06.zip
ボタンをつかおう
•  こんどは、ボタンをつかってみよう
やってみよう
•  とりあえず、絵が変わる部分を、コメント
   にしよう。
- (IBAction)swipeRight:(id)sender {
// self.mainImageView.image = [UIImage
imageNamed:@"makoto_p_01.png"];
    NSLog(@"シュッ!(みぎ)");
}

- (IBAction)swipeLeft:(id)sender {
// self.mainImageView.image = [UIImage
imageNamed:@"makoto_p_02.png"];
      NSLog(@"シュッ!(ひだり)");
}
ボタンを置こう
•  ボタンを3個おこう
•  それぞれ、A,B,Cにし
   よう
やってみよう
•  ストーリーボードに
   して、右上のジェント
   ルメンをおそう
•  画面が分割されて、
   右側にヘッダファイ
   ルが出るのを確認
やってみよう
•  Aのボタンからcontrolを押しながらドラッグして
   Actionを設定
やってみよう
•  同じようにして、ボ
   タンA,B,Cのア
   クションを作ろう!
やってみよう
•    関数が追加されているので、ログを入れてみよう!




- (IBAction)buttonTouchA:(id)sender {
     NSLog(@"ボタン:A");
}

- (IBAction)buttonTouchB:(id)sender {
    NSLog(@"ボタン:B");
}

- (IBAction)buttonTouchC:(id)sender {
    NSLog(@"ボタン:C");
}
できた!
•  ボタンを押したらログが出
   る!




                  show_07.zip
やってみよう
•  ボタンが押されたら、画像が変わるよう
   にしてみよう!
- (IBAction)buttonTouchA:(id)sender {
    self.mainImageView.image = [UIImage imageNamed:@"makoto_p_01.png"];
    NSLog(@"ボタン:A");
}

- (IBAction)buttonTouchB:(id)sender {
    self.mainImageView.image = [UIImage imageNamed:@"makoto_p_02.png"];
    NSLog(@"ボタン:B");
}

- (IBAction)buttonTouchC:(id)sender {
    self.mainImageView.image = [UIImage imageNamed:@"makoto_p_03.png"];
    NSLog(@"ボタン:C");
}
できた!
•  ボタンを押したら写真が変
   わる!
アニメーションに挑戦
•  カッコいいアニメーションに挑戦しよ
   う!
やってみよう
- (IBAction)buttonTouchA:(id)sender {
    self.mainImageView.image = [UIImage imageNamed:@"makoto_p_01.png"];

    self.mainImageView.alpha = 0;

    [UIView animateWithDuration:4.0f
                   delay:0
                 options:UIViewAnimationOptionCurveLinear
               animations:^{
                  self.mainImageView.alpha = 1.0f;
               }
               completion:^(BOOL finished){
                  NSLog(@"アニメーション終了");
               }
    ];

    NSLog(@"ボタン:A");
}
できた!
•  フェードインする!
かいぞうしよう
•  フェードアウトして画像が消えた後に、画像を
   入れ替えたい!
やってみよう
- (IBAction)buttonTouchA:(id)sender {
    self.mainImageView.alpha = 1.0f;
    [UIView animateWithDuration:4.0f
                   delay:0
                 options:UIViewAnimationOptionCurveLinear
               animations:^{
                  self.mainImageView.alpha = 0;
               }
               completion:^(BOOL finished){
                  self.mainImageView.alpha = 1.0f;
                  self.mainImageView.image = [UIImage
imageNamed:@"makoto_p_01.png"];
               }
    ];
    NSLog(@"ボタン:A");
}
できた!
•  フェードアウトした後、す
   ぐでてきた!
かいぞうしよう
•  フェードアウトして画像が消えた後に、画像を
   入れ替えて、フェードインして出てきてほし
   い!
やってみよう
- (IBAction)buttonTouchA:(id)sender {
    self.mainImageView.alpha = 1.0f;
    [UIView animateWithDuration:3.0f
                   delay:0
                 options:UIViewAnimationOptionCurveLinear
               animations:^{
                  self.mainImageView.alpha = 0;
               }
               completion:^(BOOL finished){
                  self.mainImageView.image = [UIImage imageNamed:@"makoto_p_01.png"];
                  [UIView animateWithDuration:3.0f
                                 delay:0
                               options:UIViewAnimationOptionCurveLinear
                             animations:^{
                                self.mainImageView.alpha = 1.0f;
                             }
                             completion:^(BOOL finished){
                             }
                   ];
               }
    ];
    NSLog(@"ボタン:A");
}
できた!
•  フェードアウトした後、
   フェードインして出てき
   た!
•  けど、Aボタン連打すると
   変だ><
やってみよう
•  ストーリーボードに
   して、右上のジェント
   ルメンをおそう
•  画面が分割されて、
   右側にヘッダファイ
   ルが出るのを確認
やってみよう
•  Aのボタンからcontrolを押しながらドラッグして
   Outletを設定
やってみよう
•  同じようにして、ボ
   タンA,B,Cのア
   ウトレットを作ろ
   う!
やってみよう
•  アニメーションしている間、ボタンを消そう!
•  表示の制御は、self.buttonA.hidden = YES;
   (YESで隠れる)
やってみよう
- (IBAction)buttonTouchA:(id)sender {
    self.buttonA.hidden = YES;
    self.buttonB.hidden = YES;
    self.buttonC.hidden = YES;
    self.mainImageView.alpha = 1.0f;
    [UIView animateWithDuration:3.0f
                   delay:0

options:UIViewAnimationOptionCurveLinear
              animations:^{
                 self.mainImageView.alpha = 0;
              }
やってみよう
completion:^(BOOL finished){
                self.mainImageView.image = [UIImage
imageNamed:@"makoto_p_01.png"];
                [UIView animateWithDuration:3.0f
                               delay:0
                             options:UIViewAnimationOptionCurveLinear
                           animations:^{
                              self.mainImageView.alpha = 1.0f;
                           }
                           completion:^(BOOL finished){
                              self.buttonA.hidden = NO;
                              self.buttonB.hidden = NO;
                              self.buttonC.hidden = NO;
                           }
                 ];
              }
  ];
  NSLog(@"ボタン:A");
}
できた!
•  アニメーションの間、ボタ
   ンが消えた!




                  show_08.zip
いどうさせよう
•  写真を移動させて、上からおりてくるよう
   にしよう!
•  写真の位置は、
   self.mainImageView.center =
   CGPointMake(x, y);で指定できる!
真ん中を確認
•  Originの赤いのを真
   ん中にすると、座標
   の指定の基準が中央
   になる!
•  self.mainImageView.
   centerは、中央指定
   なので、この値をみ
   ながらやろう!
やってみよう
- (IBAction)buttonTouchB:(id)sender {
    self.buttonA.hidden = YES;
    self.buttonB.hidden = YES;
    self.buttonC.hidden = YES;

    self.mainImageView.image = [UIImage imageNamed:@"makoto_p_02.png"];
    self.mainImageView.center = CGPointMake(160, -178);

    [UIView animateWithDuration:2.0f
                   delay:0
                 options:UIViewAnimationOptionCurveLinear
               animations:^{
                  self.mainImageView.center = CGPointMake(160, 178);

              }
              completion:^(BOOL finished){
                self.buttonA.hidden = NO;
                self.buttonB.hidden = NO;
                self.buttonC.hidden = NO;
              }
    ];
    NSLog(@"ボタン:B");
}
できた!
•  うえからおりてきた!
大きさを変えよう
•  写真の大きさを変えてみよう
•  写真のサイズは、
   mainImageView.bounds =
   CGRectMake(0, 0, w, h);で指定できる!
•  最初に、横のサイズ(w)を0にして、そ
   のあと、画像を交換して、横のサイズを元
   に戻してみよう!
サイズを確認
•  Width,Heightをみな
   がらやろう!
やってみよう
- (IBAction)buttonTouchC:(id)sender {
    self.buttonA.hidden = YES;
    self.buttonB.hidden = YES;
    self.buttonC.hidden = YES;

  [UIView animateWithDuration:1.0f
                delay:0

options:UIViewAnimationOptionCurveLinear
              animations:^{
                 mainImageView.bounds =
CGRectMake(0, 0, 0, 315);
              }
やってみよう
completion:^(BOOL finished){
                self.mainImageView.image = [UIImage
imageNamed:@"makoto_p_03.png"];
                [UIView animateWithDuration:1.0f
                               delay:0
                             options:UIViewAnimationOptionCurveLinear
                           animations:^{
                              mainImageView.bounds = CGRectMake(0, 0, 246,
315);
                           }
                           completion:^(BOOL finished){
                              self.buttonA.hidden = NO;
                              self.buttonB.hidden = NO;
                              self.buttonC.hidden = NO;
                           }
                 ];
              }
   ];
  NSLog(@"ボタン:C");
}
できた!
•  アニメーションができた!




                  show_09.zip
アプリ的なもの
•  アプリ的なものを作ってみよう!
ヒント
•  アイコンとスプラッ
   シュをドラッグして
   定義しよう!
ヒント
•  Bundle display nameを変更してみよう!
できた!
•  完成した!




                  show_10.zip
まとめ
•  プログラムちょっとわかった!
おわり
主催(共同開催):
株式会社 gooya
http://www.gooya.co.jp/
メドレー株式会社
http://www.medley.co.jp/

講師:西田 寛輔 (Tonosamart)
http://www.facebook.com/tonosamart

Mais conteúdo relacionado

Mais de Nishida Kansuke

デブサミ2017 【16-D-5】複数台のロボットと音楽をする取り組み(太田智美・西田寛輔) -
デブサミ2017 【16-D-5】複数台のロボットと音楽をする取り組み(太田智美・西田寛輔)	-デブサミ2017 【16-D-5】複数台のロボットと音楽をする取り組み(太田智美・西田寛輔)	-
デブサミ2017 【16-D-5】複数台のロボットと音楽をする取り組み(太田智美・西田寛輔) -
Nishida Kansuke
 
㊱タイルマップに挑戦
㊱タイルマップに挑戦㊱タイルマップに挑戦
㊱タイルマップに挑戦
Nishida Kansuke
 
㉟cocos2d-x勉強会:簡単なアプリをつくってみよう
㉟cocos2d-x勉強会:簡単なアプリをつくってみよう㉟cocos2d-x勉強会:簡単なアプリをつくってみよう
㉟cocos2d-x勉強会:簡単なアプリをつくってみよう
Nishida Kansuke
 
㉞cocos2d-xの開発環境をインストールしてみよう
㉞cocos2d-xの開発環境をインストールしてみよう㉞cocos2d-xの開発環境をインストールしてみよう
㉞cocos2d-xの開発環境をインストールしてみよう
Nishida Kansuke
 

Mais de Nishida Kansuke (20)

【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#1】資料
【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#1】資料【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#1】資料
【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#1】資料
 
デブサミ2017 【16-D-5】複数台のロボットと音楽をする取り組み(太田智美・西田寛輔) -
デブサミ2017 【16-D-5】複数台のロボットと音楽をする取り組み(太田智美・西田寛輔)	-デブサミ2017 【16-D-5】複数台のロボットと音楽をする取り組み(太田智美・西田寛輔)	-
デブサミ2017 【16-D-5】複数台のロボットと音楽をする取り組み(太田智美・西田寛輔) -
 
PHP×コミニュケーションロボット
PHP×コミニュケーションロボットPHP×コミニュケーションロボット
PHP×コミニュケーションロボット
 
Mizuho.hack 未来の銀行に必要なサービス
Mizuho.hack 未来の銀行に必要なサービスMizuho.hack 未来の銀行に必要なサービス
Mizuho.hack 未来の銀行に必要なサービス
 
20160314 すしルート#3 資料
20160314 すしルート#3 資料20160314 すしルート#3 資料
20160314 すしルート#3 資料
 
ロボ年表を作ってみた
ロボ年表を作ってみたロボ年表を作ってみた
ロボ年表を作ってみた
 
Pepper用課金ボックス「ロボコイン」
Pepper用課金ボックス「ロボコイン」Pepper用課金ボックス「ロボコイン」
Pepper用課金ボックス「ロボコイン」
 
jsおじさん#5 ペッパーとjavascript
jsおじさん#5 ペッパーとjavascriptjsおじさん#5 ペッパーとjavascript
jsおじさん#5 ペッパーとjavascript
 
【3/13】【女性限定】ロボットで、何が出来る?ペッパーにふれてみよう&ミニアイデアソン【とのさまラボ】 powered by 朝日新聞メディアラボ
【3/13】【女性限定】ロボットで、何が出来る?ペッパーにふれてみよう&ミニアイデアソン【とのさまラボ】 powered by 朝日新聞メディアラボ【3/13】【女性限定】ロボットで、何が出来る?ペッパーにふれてみよう&ミニアイデアソン【とのさまラボ】 powered by 朝日新聞メディアラボ
【3/13】【女性限定】ロボットで、何が出来る?ペッパーにふれてみよう&ミニアイデアソン【とのさまラボ】 powered by 朝日新聞メディアラボ
 
ペッパービンゴ【ペッパーアプリコンテスト2015決勝進出作品】
ペッパービンゴ【ペッパーアプリコンテスト2015決勝進出作品】ペッパービンゴ【ペッパーアプリコンテスト2015決勝進出作品】
ペッパービンゴ【ペッパーアプリコンテスト2015決勝進出作品】
 
JSを使ったアプリ開発!(JSオジサン#3)
JSを使ったアプリ開発!(JSオジサン#3)JSを使ったアプリ開発!(JSオジサン#3)
JSを使ったアプリ開発!(JSオジサン#3)
 
ハッカソン発表資料(朝日新聞 × モバイルファクトリー 異業種ハッカソン!)
ハッカソン発表資料(朝日新聞 × モバイルファクトリー 異業種ハッカソン!)ハッカソン発表資料(朝日新聞 × モバイルファクトリー 異業種ハッカソン!)
ハッカソン発表資料(朝日新聞 × モバイルファクトリー 異業種ハッカソン!)
 
iBeaconを使ったアプリ開発
iBeaconを使ったアプリ開発iBeaconを使ったアプリ開発
iBeaconを使ったアプリ開発
 
㊱タイルマップに挑戦
㊱タイルマップに挑戦㊱タイルマップに挑戦
㊱タイルマップに挑戦
 
クリスマスハッカソン2013:サンタロスをUNITYで作った
クリスマスハッカソン2013:サンタロスをUNITYで作ったクリスマスハッカソン2013:サンタロスをUNITYで作った
クリスマスハッカソン2013:サンタロスをUNITYで作った
 
㉟cocos2d-x勉強会:簡単なアプリをつくってみよう
㉟cocos2d-x勉強会:簡単なアプリをつくってみよう㉟cocos2d-x勉強会:簡単なアプリをつくってみよう
㉟cocos2d-x勉強会:簡単なアプリをつくってみよう
 
㉞cocos2d-xの開発環境をインストールしてみよう
㉞cocos2d-xの開発環境をインストールしてみよう㉞cocos2d-xの開発環境をインストールしてみよう
㉞cocos2d-xの開発環境をインストールしてみよう
 
㉝“知育アプリを作ろう! Kwikで作るデジタル絵本” 勉強会②
㉝“知育アプリを作ろう! Kwikで作るデジタル絵本” 勉強会②㉝“知育アプリを作ろう! Kwikで作るデジタル絵本” 勉強会②
㉝“知育アプリを作ろう! Kwikで作るデジタル絵本” 勉強会②
 
Smart canvasで作るカジュアルゲーム
Smart canvasで作るカジュアルゲームSmart canvasで作るカジュアルゲーム
Smart canvasで作るカジュアルゲーム
 
モダン記法で簡単プログラミング!
モダン記法で簡単プログラミング!モダン記法で簡単プログラミング!
モダン記法で簡単プログラミング!
 

⑭iPhoneアプリを作ってみよう!(超初心者向け)その2