teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

回答追記

2015/09/10 08:08

投稿

TakeOne
TakeOne

スコア6299

answer CHANGED
@@ -30,4 +30,30 @@
30
30
  画面の一番上(ステータスバーと重なる部分)がコンテンツの開始位置
31
31
  となるようにしたければNOを設定すればいいです。
32
32
  複雑な画面ならAutoAdjustに頼るのではなく、自分で意図するレイアウトになるよう
33
- scrollViewInsetsを自分で調整した方がよいかもしれません。
33
+ scrollViewInsetsを自分で調整した方がよいかもしれません。
34
+
35
+ ---
36
+ (9/10追記)
37
+
38
+ 透明にする方法について補足と疑問点についてコメントを頂いたので追記します。
39
+
40
+ まず、透明にする方法についてですが
41
+ > [[UINavigationBar appearance] setBackgroundImage:[UIImage new] forBarPosition:UIBarPositionTopAttached barMetrics:UIBarMetricsDefault];
42
+
43
+ setBackgroundImageで[UIImage new]を指定しているということは、0x0サイズの画像を
44
+ 背景画像として貼り付けているということです。
45
+ 私は0x0サイズの画像をナビゲーションバーに貼り付けたことはなかったので、どうなるか確認してみた
46
+ ところ、ステータスバーの部分は黒くならず、一番下に重なっているスクロールビューのコンテンツが
47
+ 表示されました。つまり私のテスト環境では意図通り動作しました。
48
+ ただ、0x0サイズの画像というのはとても特殊なので、環境によって変わる不定動作を引き起こすのかもしれません。
49
+ 念のため縦64ピクセルの透明画像を貼り付けて試してみた方がよいように思います。
50
+ 縦64ピクセルの透明画像を貼り付けるには、
51
+ UIGraphicsBeginImageContextWithOptions(CGSizeMake(320, 64), NO, 0);
52
+ UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
53
+ UIGraphicsEndImageContext();
54
+ で、imageを作成し、[UIImage new]の替わりにimageを指定すればよいです。
55
+
56
+ 次にコメントに書かれている疑問点についてですが、
57
+ まず、「scrollViewInsets」と書いているのは「UIScrollViewクラスのcontentInset」の誤りです。うろおぼえのままちゃんと確認せず書いてしまいました。すみません。contentInset.topを指定するという認識で正しいです。
58
+ ただ、今回の問題(ステータスバーの部分が黒くなる)は、contentInsetの設定とは関係ないと思います。まずはステータスバーの部分が黒くなる問題を解消してから、contentInset.top(スクロールエリアの余白)は後で調整したのでよいと思います。
59
+