2012/07/01

UINavigationBarに影をつける方法

UINavigationControllerのNavigationBarに影をつける方法


ナビゲーションバーに立体感を持たせる感じで、ほんのり影をつける方法を探してココを見つけました。

http://stackoverflow.com/questions/5940076/how-to-create-uinavigationbar-drop-shadow

ありがたい情報を参考にして、こんな感じで。

私の場合、UINavigationControllerのサブクラス(MyNavigationController:クラス名は適当..)を使っているためこんなコードで実現できました。

ヘッダファイルに "#import <QuartzCore/QuartzCore.h>"を追加した後、ソースファイルをこんな感じで修正

 // MyNavigationController.m
 - (void)viewDidLoad
  {
    [super viewDidLoad];
   // ...
  // drop shadow
  CALayer *layer = self.navigationBar.layer;
  layer.masksToBounds = NO;
  layer.shadowColor = [[UIColor blackColor] CGColor];
  layer.shadowOffset = CGSizeMake(1.0f, 1.0f);
  layer.shadowRadius = 3.0f;
  layer.shadowOpacity = 1.0f;
}

アニメーションしたりするときは、layer.shouldRasterize = YES; とかしておくといいらしいです(未検証).

あと、layerに設定している各種プロパティの値については、こちらのブログで細かく検証されていました。すばらしー。

頭と尻尾はくれてやる!- 画像に影を付けたいのでいろいろプロパティをいじってみた


iosのUIWebViewを滑らかにスクロールする方法
(iOS5でのみ動作確認済み)
 // CGRectは一番上にスクロールしたいから適当なサイズ.
 CGRect topRect = CGRectMake(0, 0, 10, 10);
 [self.webView.scrollView scrollRectToVisible:topRect animated:YES];

探してみるとjavascriptでスクロールする方法が見つかったけれど、
objc側から制御した方がぬるぬる動くスクロールで見栄えがよかった。

ポイントはwebview.scrollViewでUIScrollViewが参照できるという点。