ネイティブiPhoneアプリ用に(jQuery Mobileの設計に基づいて)カスタムテーブルビューを設計しました。テーブルビューは、内の背景画像として使用できるいくつかの画像(ヘッダー、行など)にスライスされましたUITableView
。私はこの画像を私のカスタムUIImageView
のになりますで使用します。一部のデバイスでは、どういうわけか下マージンが表示されます。backgroundView
UITableViewCell
簡単にするために、私はiOSのテーブルビューヘッダーを使用しません。テーブルビュー内のすべては、(偽の)ヘッダーを含むテーブルビューセルです。各セルの高さは、背景画像の高さと一致します。すべてのビューはプログラムでセットアップされるため、XIBファイルに問題を引き起こす可能性のある隠されたものはありません。
UITableView
withスタイルを使用していますUITableViewStylePlain
。通常の区切り文字が表示されないようにするために、テーブルビューコントローラーのviewDidLoad
メソッドで次のコードを使用します。
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
init
カスタム(サブクラス化された)テーブルビューセルのメソッドでは、次のように背景画像を適用します。
UIImage *backgroundImage = [UIImage imageNamed:@"Word.png"];
self.backgroundView = [[UIImageView alloc] initWithImage:backgroundImage];
これは、iOSシミュレーター(iOS 5.0と5.1の両方)およびiPhoneとiPad(iOS 6の両方)で完全に機能します。ただし、私のクライアントのiPhone(iOS 5.1.1)では、背景画像の高さがテーブルビューセルより2px低くなっています。このため、水平線が表示されます。
完全な画像をクリックしてください
デバッグを容易にするために、次のlayoutSubviews
ような方法でセルとその背景ビューに背景色を追加しました。
self.backgroundView.backgroundColor = [UIColor orangeColor];
self.backgroundColor = [UIColor yellowColor];
通常のセルにはオレンジと黄色を使用し、ヘッダーセルには青と緑を使用しました。画像を見ると、背景ビューの高さがセルの高さと等しいことがわかります。これは、frame
とbounds
の両方のビューをログに記録することで確認されます。
ここで何が悪いのかわかりません。すべてのUITableViewCellは、背景画像とまったく同じサイズです。すべての画像に@2x
は、正確に2倍大きいRetinaバリアントがあります。
うまくいけば、誰かがここで何が悪いのかを知っています。何か試してみる必要がある場合は、コメントを投稿してください。さらに、iOS 5.1.1がインストールされている他のデバイスをいくつか見つけて、そこで何が起こるかを確認します。