【iOS開發-64】微博案例練習:用代碼自定義cell,主要內容是針對不同高度的cell

分類:編程 時間:2017-03-21

(1)效果

(2)源代碼和素材下載

http://download.csdn.net/detail/wsb200514/8089727

(3)總結

——可以利用xib布局cell,但是這種情況的cell時固定高度

——如果每個cell是不同高度,則需要用到代碼,核心思想是根據cell裏面子控件的高度計算這個cell的高度

——這裏面用到的知識點之一,計算一段文字所占據的高寬,就是確定文字大小,文字寬度之後,可以利用一個方法計算出這段文字的寬高,當然這個方法返回的東西很多,size只是其中之一的屬性。

    CGSize nameMaxSize=CGSizeMake(MAXFLOAT, MAXFLOAT);
    NSDictionary *nameAttr=@{NSFontAttributeName:[UIFont systemFontOfSize:14]};
    CGSize nameSize=[self.status.name boundingRectWithSize:nameMaxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:nameAttr context:nil].size;

——知識點之二,因為這個項目一打開的主頁就是一個滾動的視圖也就是一個tableView,所以我們可以刪除項目原先的ViewController,創建一個tableViewController作為主入口。把這個控制器作為主入口的設置是:is Initial View Controller,打鉤即可。(刪除這個控制器自帶的cell)

——知識點之三,還是封裝。模型、視圖、控制器各司其職。

——對於只提供外界訪問的變量,即只有getter的那些變量,在@property時候增加一個readonly,防止被其他人修改。

——plist裏面的number類型數據的1和0,可以被直接轉換成BOOL 的0和1。

——修改cell高度的除了直接用tableView.cellHeight這個屬性之外,還有一個代理方法,就是本例中用到的方法。

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{

}

——對於部分控件,如果有的話就顯示,如果沒有就隱藏,這裏面hidden屬性至關重要,而且hidden的YES和NO最好是成對出現。因為這些cell會被放入緩存池,再次取出來使用的時候如果沒有判斷是否顯示則會出錯。


Tags: property 素材下載 源代碼 number 控制器

文章來源:


ads
ads

相關文章
ads

相關文章

ad