1. 程式人生 > >iOS之如何自適應TableViewCell的高度

iOS之如何自適應TableViewCell的高度

1. 問題描述:

    在專案中會遇到由於每個cell的圖片和文字大小不一致,如果cell的height高度設定不合理的話,對使用者體驗不是很好。但是如果對cell的height高度設定死之後,當遇到大量文字的話也會出現問題。所以這就需要在每次對cell進行繪製的時候對cell的height進行計算,然後再繪製cell。但是一般情況下,這種對cell的height計算會比較複雜。但是Apple自iOS 8之後推出了一種新的方式,可以用幾行程式碼就可以設定cell的自適應高度,連func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { }方法都可以進行省略。

    解決方案:

        //iOS 8開始的自適應高度,可以不需要實現定義高度的方法
        self.tableView.estimatedRowHeight = 200
        self.tableView.rowHeight = UITableViewAutomaticDimensio
新增如上程式碼之後,然後執行之後,就可以發現一個驚奇的效果~

2.  問題描述:

     在按照1中解決方案修改程式碼之後,重新執行專案,發現cell的圖片有些壓縮,並沒有出現自適應高度的效果。但是當你用滑鼠往下拉動cell的之後,令人奇怪的一幕發生了,這個時候所有的cell都變大也就是cell的自適應高度有效果了。那究竟原因是什麼呢?

     解決方案:

     在review程式碼幾分鐘之後,發現了原因。因為我在對cell中的圖片進行賦值的時候,是採用的非同步載入圖片,所以計算圖片的高度會需要一會時間,以至於我往後拉一下所有的圖片就會恢復到自身的大小。於是,我在對cell的圖片控制元件進行賦值的時候,是採用直接賦值,也就是同步操作。詳見程式碼:

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let initIdentifier = "MyCell"
        var cell = tableView.dequeueReusableCellWithIdentifier(initIdentifier) as? NewsTableViewCell
        if cell == nil{
            tableView.registerNib(UINib(nibName: "NewsTableViewCell", bundle: nil), forCellReuseIdentifier: initIdentifier)
            cell = tableView.dequeueReusableCellWithIdentifier(initIdentifier) as? NewsTableViewCell
        }
        //進行cell的繪製
        let model = self.items1[indexPath.row]
//        cell?.headerImage.image = UIImage(data: NSData(contentsOfURL: NSURL(string: model.newsImageName)!)!)
        
        //利用SDWebImage非同步載入圖片
        cell?.headerImage.sd_setImageWithURL(NSURL(string: model.newsImageName))

        
        //圖片圓角功能
//        cell?.headerImage.layer.cornerRadius = 60
//        cell?.headerImage.layer.masksToBounds = true
        
        cell?.headerLabel.text = model.newsTitle
        cell?.selectionStyle = UITableViewCellSelectionStyle.None
        return cell!
    }

3.詳見程式碼部分(ViewController+TableView.swift)

相關推薦

iOS如何適應TableViewCell高度

1. 問題描述:     在專案中會遇到由於每個cell的圖片和文字大小不一致,如果cell的height高度設定不合理的話,對使用者體驗不是很好。但是如果對cell的height高度設定死之後,當遇到大量文字的話也會出現問題。所以這就需要在每次對cell進行繪製的時候對

iOS Label 適應高度

非主流 自適應高度 all category blog 自適應 logs uicolor height 推薦第二個 測試一,只改變numberOfLines屬性,label的高度不會自適應(會有text中的一部分內容稱為......) NSString *str

iOS 8適應高度單元格問題

iOS 8 中通過UITableViewAutomaticDimension 常量支援自適應高度的單元格(iOS 7 就要麻煩得多)。但是在實際應用中,我們需要注意以下幾個問題: 1、 設定好模板單元格的自動佈局 模板單元格中,subviews的自動區域性

iOS UITextView適應高度貼上大量文字導致顯示不全問題處理

對UITextView做了輸入自適應高度處理,在貼上大量文字時出現了高度可自適應但文字顯示不全的問題,檢視圖層發現_UITextContainerView顯示的高度和實際高度不同,在自適應高度程式碼後新增下面程式碼,問題得到處理。 [textView sc

完美解決iOS的WebView適應內容高度問題

轉自:http://blog.csdn.net/ayuapp/article/details/45565121 /////////////////////////////初始化,self.view是父控制元件///////////////////////////////

iOS的WebView適應內容高度

// _webView = [[UIWebView alloc] initWithFrame: CGRectMake(0, 0, self.view.frame.size.width, 0)]; _webView.delegate = self; _webView.

iOS UITableView cell適應內容高度

定義UITableView 並且遵守兩個協議 firstTableView = [[UITableViewalloc]initWithFrame:CGRectMake(0, 64, kScreenWidth, kScreenHeight-64) style:UITa

XHTML學習筆記(3)適應高度

#header{ MARGIN: 0px; BORDER: 0px;BACKGROUND: #ccd2de; WIDTH: 580px; HEIGHT: 60px;} #mainbox { MARGIN: 0px; WIDTH: 580px; BACKGROUND: #FFF

頁面中適應iframe高度的問題總結

當需要對iframe進行操作,例如獲取iframe的高度等,iframe和當前頁面需要時同域,跨域情況下是獲取不到的; 當動態設定iframe的高度時,iframe的高度一旦變大是不會自動縮小的。 例如: iframe中 a 頁面高度為800px,b 頁面的高度為500

eayui js動態載入Datagrid,適應寬度,高度

HTML: <div class="easyui-layout" style="min-height:100%;min-width:100%;"> <div id="gridData" class="region:'center',easyui-datagrid" ></

Matlab適應直方圖均衡adapthisteq

轉自這裡   adapthisteq函式執行所謂的對比度受限的自適應直方圖均衡 這種方法用直方圖匹配方法來逐個處理影象中的較小區域(稱為小塊)。然後使用雙線性內插方法將相鄰的小片組合起來,從而消除人口引入的邊界。 特別在均勻的灰度區域,可以限制對比度來避免放大噪聲。 &

微信小程式scroll-view元件適應不同高度的手機

已知微信相比於H5開發有rpx這個單位可以自適應一些不同寬度的手機,但是有的時候需要自適應一些手機高度賊大的手機比如iphoneX系列 所以scroll-view的wxss樣式裡肯定不能寫死,我能想到的方法就是js裡頭載入畫面前再設定高度 wxml裡 <scrol

iOS 8 適應 Cell

在使用 table view 的時侯經常會遇到這樣的需求:table view 的 cell 中的內容是動態的,導致在開發的時候不知道一個 cell 的高度具體是多少,所以需要提供一個計算 cell 高度的演算法,在每次載入到這個 cell 的時候計算出 cell 真正的高度。

怎麼讓Html的高度適應螢幕高度

在寫css靜態頁面的時候讓Html的高度自適應螢幕高度是一個常見的需求,比如你有一個需要置底的bottom按鈕,需要在內容不足一屏的時候顯示在螢幕的底部,在內容超過一屏的時候顯示在所有內容的底部。

等比縮放適應神器——css3的rem

1.rem簡介   rem是CSS3中新增加的一個單位值,他和em單位一樣,都是一個相對單位。不同的是em是相對於元素的父元素的font-size進行計算;rem是相對於根元素html的font-size進行計算。這樣一來rem就繞開了複雜的層級關係,實現了類似於em單位的功

iOS定義導航按鈕UIBarButtonItem的樣式

在一個APP中導航的重要性和方便性自然不需要多說了,由於系統的導航用起來實在不怎麼友好,一直想抽個時間把導航學習下 由於投入到工作的時間多些,懶懶散散的一直都是用的時候才去找度娘,一直沒來個總結,前段時間在群裡和別人討論的 時候我說自定義導航不就是隱藏系統的,自己新增一個U

InnoDB關鍵特性適應hash索引

    一、索引的資源消耗分析 1、索引三大特點   1、小:只在一個到多個列建立索引   2、有序:可以快速定位終點   3、有棵樹:可以定位起點,樹高一般小於等於3 2、索引的資源消耗點   1、樹的高度,順序訪問索引的資料頁

javascript改進textarea文字域適應內容高度

場景需求:根據輸入內容自適應高度,textarea不能滿足需求,需要該進 autoTextarea.js: define('autoTextarea',[],function(){      return{       &n

詳細實現微信輸入框效果(textView適應文字高度

前言 最近會不斷推出一些輪子,這次寫了一個控制元件,類似微信輸入框,評論View,隨著文字增加,textView自增長高度, 如果喜歡我的文章,可以關注我微博:吖了個崢,也可以來小碼哥,瞭解下我們的iOS培訓課程。後續還會更新更多內容,有任何問題,歡迎簡書留言崢吖。。。 Dem

PHP適應高度等比例縮圖函式 (無裁切)

對於產品類或者圖片類網站來說,縮圖是一個很重要的應用。其實說來很簡單,也就是把大圖縮放成一個小圖,用於圖片的列表展示,這樣可以達到使用者快速瀏覽的目的,又能節省頻寬。 如果是等比例縮放,比如小圖是大圖的1/2或者1/5之類的,比較容易處理。但有時候我們需要處理大量不同尺寸的大圖,讓其生成固定寬高度的縮圖。那就