統計情報(30日間)


最新情報をツイート


人気の投稿

カスタム UITableViewCell

このエントリーをはてなブックマークに追加

参考になる。



Cellの再描画
時々、Cellの中身を更新したので再描画させたい時があります。
これのやり方は、以下の記事が参考になりました。 Cellに対してsetNeedLayoutを送ればいいと。
なるほど。

UISearchBar 外観のカスタマイズ

このエントリーをはてなブックマークに追加

こんな感じで悪くない。


あらかじめ用意した背景画像を使っている。フォントまで専用に用意されていた。


実装は UISearchBar のサブクラスを作り、サブビューとしてUIImageViewを貼りつけておく。
そして layoutSubviews をオーバーライドして UITextFieldを見つけ出し、表現をカスタマイズする。

- (void)layoutSubviews {
  
  [self setShowsCancelButton:NO animated:NO];
  UITextField *searchField;
  NSUInteger numViews = [self.subviews count];
  for(int i = 0; i < numViews; i++) {
    if([[self.subviews objectAtIndex:i] isKindOfClass:[UITextField class]]) { //conform?
      searchField = [self.subviews objectAtIndex:i];
    }
  }
  [self bringSubviewToFront:searchField];
  if(!(searchField == nil)) {
    searchField.textColor = [self colorWithHex:0x8b909c];
    searchField.font = [UIFont fontWithName:@"MyriadPro-It" size:18];
    :

最近この「サブクラスでlayoutSubviewsをオーバライドする」UIカスタマイズ手法はよくみかける。パターン化されてきた感じ。




可変幅なボタンを綺麗に描画する方法

このエントリーをはてなブックマークに追加

-[UIImage resizableImageWithCapInsets:] を使う。


こんな画像を用意してボタンの背景に使う。

そのままだと文字幅に合わせて画像が拡大されてしまう。

そこで resizableImageWithCapInsets: を使うとこうなる。

UIViewController のコンテナを使ったサンプル

このエントリーをはてなブックマークに追加




サンプルを実行すると path2のようなオーバーラップしたビューが表示される。

UIViewController のコンテナ API利用の参考になる。

iOS 5 から UIViewController は子UIViewController を持つコンテナになれる

このエントリーをはてなブックマークに追加

これはいい。




付属のサンプルプログラムより。
左右の Viewがそれぞれ画面全体のUIViewControllerとは別々の UIViewController に紐づいていて、さらに他の UIViewController へトランジション効果をかけながら遷移することができる。

UIViewController のりファンレスを見ると確かにコンテンナ向けの API が追加されている。
UIViewController Class Reference
の "Implementing a Container View Controller" のところ。追加 API は:
addChildViewController:
removeFromParentViewController
transitionFromViewController:toViewController:duration:options:animations:completion:
willMoveToParentViewController:
didMoveToParentViewController:

これらを使うとカスタムなナビゲーションやタブビューが作り易くなる。特に、UIViewControllerの仕組みがそのまま使えるとビューのload/unloadをフレームワーク任せにできるのでメモリ効率の良い実装が楽にできるのがうれしい。今作ってるアプリでは自前で似た機能を作っていたので複雑な気持ちもあるが。。

関連情報