プログラミングと音楽とアニメとiPhoneとiPadとMacとAndroidとLogicとギターとテニスと車

アプリ開発系の勉強メモやTipsなどを中心に他いろいろと書いていきます。

独自のポップアップ表示が簡単に実装できるライブラリを公開しました。

TRACustomWindow

https://github.com/travitu/TRACustomWindow

f:id:travitu:20140528132407g:plain

作った理由
既に同じようなライブラリはありましたが、以下の条件をよい感じに満たしてくれるものが見当たらなかったので作りました。

  • 画面のどこをタッチしてもポップアップが消えるようにしたい
  • ポップアップのアニメーションがiOS標準の動きになるべく近いものにしたい
  • 画像やボタンを簡単にカスタマイズできるようにしたい


使い方
ライブラリをダウンロードして、以下の4つのファイルを含んだ TRACustomWindow フォルダごとプロジェクトに追加します。

  • TRACustomBaseView.h
  • TRACustomBaseView.m
  • TRACustomUIWindow.h
  • TRACustomUIWindow.m

f:id:travitu:20140528145234j:plain

使いたいViewControllerのヘッダーファイルに
#import "TRACustomUIWindow.h" と TRACustomUIWindowDelegate を追加します。

ポップアップを表示したい箇所で以下のメソッドを呼び出します。

[[TRACustomUIWindow sharedInstance] showWindow];
[[TRACustomUIWindow sharedInstance] setDelegate:self];

画面のタッチでポップアップを消したくない場合は、ポップアップ表示の時に以下のメソッドを追加します。

[[TRACustomUIWindow sharedInstance] setEnableBaseViewTouch:NO];

ボタンのタップでポップアップを消したい時は以下のメソッドを呼び出します。

[[TRACustomUIWindow sharedInstance] hideWindow];


デモのプロジェクトも一緒に見てもらえれば簡単に導入できると思います。
https://github.com/travitu/TRACustomWindow

待望の頭文字D 最終話Final Stageが放送始まっていた!そして、、、

今日テレビを見てたらあのイニシャルDのCMが流れてきました。最終話のアニメ化はいつなのかと思いながら1年くらい経っていて忘れていましたが、ついに放送が始まってDVD発売と映画も公開されるみたいで、楽しみが1つ増えました。

最終話Final Stageの放送スケジュール

http://www.animax.co.jp/special/initial-d/

そのDVD発売

http://www.amazon.co.jp/頭文字-イニシャル-Final-Stage-Vol-1/dp/B00ITKL19M

新劇場版公式サイト

http://initiald-movie.com

ちなみにFinal Stageのオープニングとエンディングの曲はこれみたいです。

https://www.youtube.com/watch?v=BTm6hNZnQKI

 

Androidのアクションバー向けアイコン画像パッケージ「Action Bar Icon Pack」が簡単便利!

Action Bar Icon Pack

http://developer.android.com/design/downloads/index.html#action-bar-icon-pack

f:id:travitu:20140520012814j:plain

AndroidデベロッパーサイトでダウンロードできるAndroid用のアイコン画像のパッケージです。イラレ(.ai)データやPNGファイルが入っています。今まで使う機会がなかったのですが、解像度ごとにフォルダ分けもされていて便利に使えそうです。

f:id:travitu:20140520015756j:plain

Failed to load properties file for project 'プロジェクト名'の対策

EclipseAndroidアプリの開発中にFailed to load properties file for project 'プロジェクト名' というエラーが出た場合の対策方法をメモ。

f:id:travitu:20140514213748j:plain

 /Users/username/.android を削除(debug.keystoreとかがあるディレクトリですね。)

ProjectをCleanしてからRunしたらエラーが消えました。

 

 

 

 

UIBarButtonItem に設定したボタン画像を切り替えて状態を維持する方法

ナビゲーションバーにオリジナルのボタン画像を配置して、そのボタンをタップしたら画像を別画像に切り替えたい場合に使えると思います。 

検証環境:iOS 7のiPhone4siPhone5s

実装例

viewDidLoad とかで以下のように UIBarButtonItem を設定します。 

    UIButton *imgBt = [UIButton buttonWithType:UIButtonTypeCustom];

    imgBt.frame = CGRectMake(0, 0, 44.0f, 44.0f);

    [imgBt addTarget:self 

         action:@selector(btAction:)        forControlEvents:UIControlEventTouchUpInside];

    [imgBt setImage:[UIImage imageNamed:@"bt_image_normal"] 

             forState:UIControlStateNormal];

    [imgBt setImage:[UIImage imageNamed:@"bt_image_selected"] 

             forState:UIControlStateSelected];

    UIBarButtonItem *barItem = [[UIBarButtonItem alloc] initWithCustomView:imgBt];

    self.navigationItem.rightBarButtonItem = barItem;

 

 - (void)btAction:(id)sender

 {

  UIButton *bt = (UIButton*)sender;

  if (bt.selected){

   bt.selected = NO;

  }else

   bt.selected = YES;

 }

  

 ポイントは、UIButtonのsetImage:forState:でUIControlStateSelectedを指定することです。UIControlStateHighlightedではタップして指を離すとUIControlStateNormalで指定した画像に直ぐに戻ってしまいます。他にもやり方があるかもしれませんが、自分的にはこの方法が一番簡単だと思います。

コインスペース 東急プラザ渋谷店が超快適!

前から気になっていたコインスペースを利用してみました。

東急プラザ渋谷の1F/2Fにあり渋谷駅からアクセスもよい。

フリードリンク

wifi有り(特に契約など不要)

空調有り

利用料:12分100円、最大1000円

【2014/6/5追記】

※ 2014年6月1日から利用料が最大1500円になっていました。

2F喫煙スペース有り

食べ物持ち込みOK

会議室有り

営業時間:9:00〜22:00

http://coinspace.jp

 

再入場はできないそうなので、長時間居る予定の場合は何か食べ物を買ってから行った方がよさそうです。

平日の正午頃に行きましたが、かなり空いていました。

オススメです。

 

UIViewControllerでUIRefreshControlを使う方法

UIRefreshControl はテーブルビューで引っ張ってセルのデータを更新するときに使えるiOS標準の機能です。

UITableViewControllerでrefreshControlプロパティに設定しても使えますが、今回はUIViewController内でUITableViewを表示する構成でのUIRefreshControlの実装方法をメモ。

利用条件:iOS6以上

実装例

変数を宣言

@property (nonatomic, strong) UIRefreshControl *refreshControl;

 

viewDidLoadでUIRefreshControlのインスタンスを生成し、

UIViewControllerに追加したUITableViewのインスタンスにaddSubviewします。

    _refreshControl = [[UIRefreshControl alloc] init];

    [_refreshControl addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged];

    [self.myTableView addSubview:_refreshControl];

 

- (void)refresh:(id) sender

{    

    // 更新開始

    [sender beginRefreshing];

}

 

更新を停止したいタイミングで以下を実行します。

[_refreshControl endRefreshing];