我正在尝试将图片设置为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
的大小。所以,我尝试添加这个方法:
有谁知道一个简单的方法来实现这个目标?
答案 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上推荐的类型安全的。