当然、すべてのスペースを埋めるためにパターンが繰り返されます。
私がイメージングできる唯一の方法は、画像の高さを増やして、最も可能性の高い最大セルの高さを超えることです。
このコードと、アイコンが最初の 44x44 ピクセルを占める透明な背景と高さ 120 ピクセルの画像を使用しました
import UIKit
class ViewController: UITableViewController {
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 30
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! UITableViewCell
cell.textLabel?.text = "\(indexPath.row)"
return cell
}
override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? {
let moreClosure = { (action: UITableViewRowAction!, indexPath: NSIndexPath!) -> Void in
println("More closure called")
}
let moreAction = UITableViewRowAction(style: .Normal, title: " ", handler: moreClosure)
if let image = UIImage(named: "star.png"){
moreAction.backgroundColor = UIColor(patternImage: image)
}
return [moreAction]
}
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
}
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return min((44.0 * CGFloat(indexPath.row) + 1), 120.0)
}
}
結果:
不透明な背景を持つ画像を使用すると、見栄えが良くなります。
サンプル プロジェクトについては、GitHubにアクセスしてください。