调整UIImage大小放置在UITableView的标题中

时间:2015-12-18 16:32:19

标签: ios swift uitableview

我正在尝试将图片设置为UITableView的标题,但标题的大小不会调整为图像的大小。基于大量研究(参见我的编辑),我用来实现此目的的相关代码如下:

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {

    let frame = CGRectMake(0, 0, 300, 150)
    let headerImageView = UIImageView(frame: frame)
    let image: UIImage = UIImage(named: "reminder3.png")!
    headerImageView.image = image
    return headerImageView
}

func tableView(tableView: UITableView, estimatedHeightForHeaderInSection section: Int) -> CGFloat {

    return 150
}

它将图像添加到标题中,我可以调整标题大小,但无论我设置为高度值(当前为300),它始终保持恒定大小。默认的标头大小。我无法调整标题以匹配UIImage的大小。所以,我尝试添加这个方法:  有谁知道一个简单的方法来实现这个目标?

2 个答案:

答案 0 :(得分:1)

您应该使用func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat代替,如下所示:

let img = UIImage(named: "image")!

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    return UIImageView(image: img)
}

func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    let w = view.frame.size.width
    let imgw = img.size.width
    let imgh = img.size.height
    return w/imgw*imgh
}

仅在您不知道确切高度时才使用estimatedHeightForHeaderInSection,它主要用于确定UITableView的滚动条位置。

答案 1 :(得分:1)

override func viewDidLoad() {
    super.viewDidLoad()

    //Create the UIImage
    let image = UIImage(named: "testing")

    //Check its size
    print(image?.size)

    //Create the UIImageView that will be our headerView with the table width
    let imageView = UIImageView(frame: CGRect(x: 0.0, y: 0.0, width: self.tableView.bounds.width, height: image!.size.height))

    //Set the image
    imageView.image = image

    //Clips to bounds so the image doesnt go over the image size
    imageView.clipsToBounds = true

    //Scale aspect fill so the image doesn't break the aspect ratio to fill in the header (it will zoom)
    imageView.contentMode = UIViewContentMode.ScaleAspectFill

    //Set the tableHeaderView
    self.tableView.tableHeaderView = imageView
}

我强烈建议你使用带有AssetIdentifier枚举的UIImage扩展来创建一个带有名称的UIImage,并且是他们在WWDC2015上推荐的类型安全的。