【Objective-C】UIScrollViewでスクロールに合わせたアニメーション
UIScrollViewを使うとき、スクロールに合わせてビューが消えたり、出現したりするアニメーションを表現したいときのメモです。
(環境:xcode5, iOS7)
スクロールビューをスクロールしたときに呼び出されるメソッド「- (void)scrollViewDidScroll:(UIScrollView *)scrollView」に実装します。
- (void)scrollViewDidScroll:(UIScrollView *)scrollView { // スクロールしたときにページが変わるようにする CGFloat pageWidth = scrollView.frame.size.width; CGFloat contentWidth = scrollView.contentSize.width; CGFloat contentOffset = scrollView.contentOffset.x; if ((NSInteger)fmod(contentOffset, pageWidth) == 0) { pageControl.currentPage = contentOffset / pageWidth; currentPage = pageControl.currentPage; } // imageViewが最後のページのときだけ消えるようにする CGFloat baseOffset = (contentWidth - (pageWidth * 2.0)); if (contentOffset >= baseOffset) { CGFloat delta = contentOffset - baseOffset; imageView.alpha = 1.0 - (delta / pageWidth); } }
イメージビューのalpha値をスクロールに合わせて変えてるだけです。。
【Objective-C】UINavigationBarのタイトルを画像にする
UINavigationBarにUIImageViewを設定したいときのメモです。
(環境:xcode5, iOS7.1)
// タイトルに貼付けたいイメージ UIImage* image = [UIImage imageNamed:imageName]; // イメージのサイズを調節 CGSize viewSize = CGSizeMake(image.size.width, image.size.height); CGFloat imageHeight = 30; CGSize titleImageSize = CGSizeMake(viewSize.width * (imageHeight / viewSize.height), imageHeight); // UIImageViewをつくる UIImageView* titleImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, titleImageSize.width, imageHeight)]; titleImageView.backgroundColor = [UIColor clearColor]; titleImageView.image = [UIImage imageNamed:image]; [titleImageView setContentMode:UIViewContentModeScaleAspectFit]; // UIImageViewをのっけるUIViewをつくる UIView* bgView = [[UIView alloc] initWithFrame:titleImageView.frame]; bgView.backgroundColor = [UIColor clearColor]; [bgView addSubview:titleImageView]; //UINavigationBarのタイトルに設定。selfはViewControllerです。 self.navigationItem.titleView = bgView;
ポイントはUIImageViewを一旦UIViewに追加してから、
そのUIViewをナビゲーションバーのタイトルへ設定していることです。
僕の場合、UIImageViewを直接「self.navigationItem.titleView」へ設定していたので、サイズが自動調整されてしまって、
navigationBarの両端にボタンを設定しているときタイトルが真ん中にいかなくて困っていました。
以上です。
【Objective-C】NSMutableArrayをソート
NSMutableArrayを並べ替えるときのメモです。
1. 文字列をキーにソートする場合
NSMutableArray* hogeMutableArray = /*データを設定*/; NSArray* sortedArr = [NSArray array]; sortedArr = [[hogeMutableArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) { HogeData* hoge1 = obj1; HogeData* hoge2 = obj2; NSStringCompareOptions compareOptions = (NSCaseInsensitiveSearch); return [hoge1.title compare:hoge2.title options:compareOptions]; }] copy]; NSMutableArray* sorted = [sortedArr mutableCopy];
HogeDataオブジェクトがtitleプロパティを持っている想定です。
ここでは昇順で並べ替えをしています。降順の場合は、
[hoge1.title compare:hoge2.title options:compareOptions];
を
[hoge2.title compare:hoge1.title options:compareOptions];
にすればOKです。
2.integerをキーにソートする場合
NSMutableArray* hogeMutableArray = /*データを設定*/; NSArray* sortedArr = [NSArray array]; sortedArr = [[hogeMutableArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) { HogeData* hoge1 = obj1; HogeData* hoge2 = obj2; if ( hoge1.orderbyRemoved > hoge2.orderbyRemoved ) { return (NSComparisonResult)NSOrderedAscending; } else if ( hoge1.orderbyRemoved < hoge2.orderbyRemoved ) { return (NSComparisonResult)NSOrderedDescending; } else { return (NSComparisonResult)NSOrderedSame; } }] copy]; NSMutableArray* sorted = [sortedArr mutableCopy];
以上です。
【Objective-C】AFNetworkingでBasic認証
AFNetworkingはHTTP通信するときにとても便利〜なライブラリですね。
AFNetworkingを使う際、Basic認証が求められるサイトと通信するときのメモです。
NSString* url = @"http://hogehoge.com"; AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; [manager setRequestSerializer:[AFHTTPRequestSerializer serializer]]; [manager.requestSerializer setAuthorizationHeaderFieldWithUsername:@"user" password:@"password"]; [manager GET:url parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog(@"%@", responseObject); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"Error: %@", error); }];
setRequestSerializerというメソッドを使ってBasic認証のIDとパスをセットしています。
以上です。
・参考記事
http://stackoverflow.com/questions/19102373/afnetworking-2-0-and-http-basic-authentication
【その他】DokuwikiにGoogleAdSenseの広告を表示する
GoogleAdSenseでDokuwikiに広告を表示させたいときのメモです。
(マニアックなネタですが。。日本語の情報がなかったのでメモしておきます。)
1. DokuwikiのGoogle AdSense Plugin をダウンロード、インストール
(環境:CentoOS 6.3)
cd <dokuwikiのディレクトリ>/lib/plugins wget http://cloud.github.com/downloads/tatewake/dokuwiki-plugin-googleads/googleads-stable.tar.gz tar -xvzf googleads-stable.tar.gz chown -Rv <ユーザー名> googleads/
解凍するだけでOKなんですね。
2. プラグインの公式サイトによると、dokuwikiディレクトリ/lib/plugins/googleads/admin.php が間違っているみたいなので修正
94行目の
print $this->plugin_locale_xhtml('intro'); //間違い
というところを
print $this->locale_xhtml('intro'); //正しい
にします。
3.dokuwikiディレクトリ/lib/tpl/<テンプレート>/main.phpを修正
<div class="stylehead"> <div class="header"> <div class="pagename"> [[<?php tpl_link(wl($ID,'do=backlink'),tpl_pagetitle($ID,true),'title="'.$lang['btn_backlink'].'"')?>]] </div> <div class="logo"> <?php tpl_link(wl(),$conf['title'],'name="dokuwiki__top" id="dokuwiki__top" accesskey="h" title="[H]"')?> </div>
というコードがあると思うので、その下に以下のコードを追記
<?php if (file_exists(DOKU_PLUGIN.'googleads/code.php')) include_once(DOKU_PLUGIN.'googleads/code.php'); if (function_exists('gads_code')) gads_code('ads_tpl_top_linklist'); ?>
4. Dokuwikiの管理画面でGoogle Adsenseの設定
・管理 > Google Adsense (正常に解凍が出来ていれば追加プラグインの下にリンクが出来ています) に移動
・Item Optionの欄に発行したGoogle AdSenseのコードを記入
<!– google_ads_section_start –> ~ここにGoogleAdSenseのコード~ <!– google_ads_section_end –>
以上です。
参考;
https://www.dokuwiki.org/plugin:googleads
http://www.systemengineers.de/plugins/google-adsense
【Objective-C】UIActivityIndicatorView (ぐるぐる回るやつ) の画像を変える
UIActivityIndicatorViewのイメージを変更するメモです。
(環境 : xcode 5.0.2, iOS7)
下記のライブラリを使えば簡単に出来ます。
https://github.com/cncool/CDActivityIndicatorView
プロジェクトに CDActivityIndicatorView フォルダごと突っ込んで、下記のように使います。
(サンプルプロジェクトのコピペ)
CDActivityIndicatorView * activityIndicatorView = [[CDActivityIndicatorView alloc] initWithImage:[UIImage imageNamed:@"custom_spinner.png"]]; activityIndicatorView.center = self.view.center; [self.view addSubview:activityIndicatorView]; [activityIndicatorView startAnimating];
イメージ
簡単なのでおすすめです。
【cocos2d-x】Spineでスケルタルアニメーション作成 -イメージ切替-
前回(http://tsuyushiga.hatenablog.jp/entry/2014/02/16/214521)に引き続き、cocos2d-xで使うキャラクターの準備です。Spineを使ってアニメーションを作成しています。
今回はイメージを切り替えて、spineboyを瞬きさせたいと思います。
1. タイムラインからキームフレームを選択
2. Hierarchyでイメージを複数登録しているスロットのツリーを開く
サンプルでは eyes に eyes イメージと、eyes-closedイメージが登録されている。
3. Hierarchyの目のマークの列に「●」をクリックすると、
イメージの表示/非表示の切替が出来る。
eyes-closedイメージが表示されるように設定。
4. eyesスロットのキーマークの列の「●」をクリックして、
変更を確定。
5. キーフレームが設定された。
同様にして、eyes-closedを再度非表示にして、
eyesを表示にすれば瞬きの完成です。
出来たものは以下です。(両腕も拡大されてしまっていますが。。)
イメージ切替は以上です。