本ブログに「Eurekaのリストの開始位置の変更方法を知りたい」とのコメントをいただきましたので調査しました。
Eurekaのリストの開始位置(行の表示位置)を変更するには、ヘッダーのサイズで調整することができますので、その方法を説明します。
Xcode:9.4.1
Swift:4.1.2
通常、セクション(section)には以下のようにテキストを設定します。
form
+++ Section("タイトル")
このセクションにはヘッダーを入れることができ、高さを指定することが可能です。
まずはシンプルな例を示します。
form
+++ Section() {
$0.header = {
let header = HeaderFooterView<UIView>(.callback({ // (1)
let view = UIView(frame: CGRect(x: 0, y: 0,
width: self.view.frame.width, height: 300)) // (2)
view.backgroundColor = .blue // (3)
return view
}))
return header
}()
}
<<< TextRow() {
$0.title = "テキスト入力"
$0.value = "テスト"
}
(1) Headerは HeaderFooterView で作成する必要があります。コールバック関数で UIView を返却する必要があります。
(2) ここでは座標x:0, y:0で、幅をフレーム幅に、高さを300にしています。この高さを変更することで、以降に表示されるリストの開始位置を変更することができます。
(3) UViewの背景色を青に設定しています。
以上で、ヘッダーに高さが300の青いエリアが表示されるようになります。
次に、ヘッダーにイメージを表示する方法を説明します。
先ほど、UIViewを使用してヘッダーを作成しました。UIViewはコンテナとして使用可能ですので、UIViewにUIImageViewを追加してあげれば、イメージを表示することができます。
先ほどのコードを利用して、画像を表示できるようにしたのが以下のコードです。
form
+++ Section() {
$0.header = {
var header = HeaderFooterView<UIView>(.callback({
let view = UIView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: 300))
let image1 = UIImage(named: "heli") // (1)
let imageView = UIImageView(image:image1) // (2)
view.addSubview(imageView) // (3)
return view
}))
return header
}()
}
<<< TextRow() {
$0.title = "テキスト入力"
$0.value = "テスト"
}
(1) アセットに登録してある「heli」というイメージを取得しています。
(2) UIImageViewのインスタンスを作成しています。このUIImageViewには(1)で取得したイメージを設定しています。
(3) コンテナのviewに、(2)で作成したUIImageViewを追加します。
以上で、ヘッダーにイメージが表示されるようになります。