2015-12-18 47 views
0

我試圖將圖像設置爲UITableView的標題,雖然標題的大小不會調整爲圖像的大小。基於大量的研究(見我的編輯),我使用的是實現這一目標的相關代碼如下:調整UIImage大小放置在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

你想tableView標題調整到你的UIImage高度(這不是300)? –

+0

的確如此,我使用300值作爲測試人員 – John

+0

好的,您可以創建UIImage,然後詢問其大小(image.size),然後創建具有該大小的tableView標頭。不需要使用委託方法。 –

回答

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的滾動條位置。

+0

非常感謝你的解釋和示例代碼! – John

0
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 
} 

我強烈建議你使用UIImage的擴展與AssetIdentifier枚舉創建名稱的UIImage的和他們建議在WWDC2015是類型安全的。