2017-06-06 11 views
0

このカスタムヘッダービュー(画像)にパディングを追加しようとしています。UITableviewカスタムセクションヘッダーの画像ビューにパディングを追加する

表はstatic content cellsで、最初のセクションにのみ画像を追加しています。

私はthisリンクをたどろうとしましたが、失敗しました。

ヘッダービューにいくつかの上部と下部のパッドを追加しようとしています。

ノー運にこれを試みた:

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { 
    if section == 0 { 
     var header = tableView.tableHeaderView 
     let image = UIImage(named: "Placeholder") // is 121x121 
     let imageView = UIImageView(frame: CGRect(x: 0, y: 20, width: tableView.frame.width, height: tableView.sectionHeaderHeight)) 
     imageView.image = image 
     imageView.contentMode = .scaleAspectFit 
     header = imageView 
     return header 
    } 
    return nil 
} 

Iはまた、デリゲートのヘッダの高さを規定しています:

override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { 
    if section == 0 { 
     return 125.0 
    } 
    return 44.0 
} 

結果がNOパディングと同じです。

任意の助けは、私はまた、全体画像の消失をもたらすヘッダサブビューにImageViewのを追加しようとした

enter image description here

を理解されるであろう。

+0

を試してみてください?または、最初のセクションのヘッダーとしてイメージが必要ですか? – DonMag

答えて

3

UIImageViewをヘッダーとして返す代わりに、UIViewにサブビューとして追加し、そこでパディングを作成します。

あなたの問題は、ヘッダーのフレームを設定しても、UITableViewはその幅と125に設定した高さに合わせてサイズを変更することになります。したがって、UIViewにそのUIViewを含める必要があります。テーブルのヘッダーを塗りつぶし、パディングするUIImageViewを含めます。

編集: あなた*テーブルは `静的コンテンツcells`ある場合は、表自体のヘッダとして追加することができ、*この

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { 
    if section == 0 { 
     let header = UIView() 
     header.backgroundColor = UIColor.clear 
     let image = UIImage(named: "Placeholder") // is 121x121 
     let imageView = UIImageView(frame: CGRect(x: 0, y: 20, width: tableView.frame.width, height: tableView.sectionHeaderHeight)) 
     imageView.image = image 
     imageView.contentMode = .scaleAspectFit 
     header.addSubview(imageView) 
     return header 
    } 
    return nil 
} 
+0

これは、画像全体を20ptの上から上に向かって左にプッシュします。どのように私は上のようにそれを中心にするでしょうか? – Simon

+0

imageViewのフレームを必要に応じて変更してください。あなたは、Xを移動し、より小さい幅にしようとすることができます、高さは、上部と下部から同じパディングを得るように-40にする必要があります。 – TawaNicolas

+0

おかげで、tableviews center center xプロパティを使って、画像サイズwidth/2で減算してフレームを取得しました。 'let imageView = UIImageView(フレーム:CGRect(x:tableView.center.x - (image.size .width/2)、y:15.0、width:tableView.frame.width、height:0)) ' – Simon

関連する問題