1. 程式人生 > >如何在Autolayout的模式下動態設定 UITableView的 tableHeader 的高度

如何在Autolayout的模式下動態設定 UITableView的 tableHeader 的高度

 最近遇到一個 問題,就是使用單獨的一個 xib檔案 autolayout來建立一個 UITableView的 tableHeader.  這個 xib是一個動態高度的View。 

      所以就有個問題,用xib 建立完的 View是 固定高度的,如果直接用 :

   m_contentTableView.tableHeaderView= headerView; 

   這樣類似的語句去設定 headerView,那麼這個headerView 總會是固定的高度,如果內容過多會顯示不完整,如果內容過少,那麼就會留下一段空白。

   嘗試了headView內部用一個變數m_bNeedHeight來記錄 headerView的內部實際需要的高度,然後在每次這個

m_bNeedHeight的時候,在外面修改 headerView的 Frame ,程式碼如下:

-(void) onNeedsHeightChanged:(CGFloat) nNeedsHeight

{

    CircleDetailsHeaderView * headerView = [self getHeaderView];

    if (headerView)

    {

        CGRect frame = headerView.frame;

        frame.size.height = nNeedsHeight;

        headerView.frame

= frame;

    }

}

這樣就好了吧,哈哈,run一下,發現然並卵,這並沒有什麼鳥用。

問題在哪呢? 

發現下面的才是終極解決問題的程式碼:

-(void) onNeedsHeightChanged:(CGFloat) nNeedsHeight

{

    CircleDetailsHeaderView * headerView = [self getHeaderView];

    if (headerView)

    {

        CGRect frame = headerView.frame;

        frame.size.height

= nNeedsHeight;

        headerView.frame = frame;

        m_contentTableView.tableHeaderView = headerView;

    }

}

那就是不但要重新設定frame,而且需要重新賦值給 tableView,這樣tableView才會重新去layout 這個外面賦值過去的headerView的 位置和大小。

相關推薦

如何在Autolayout模式動態設定 UITableViewtableHeader高度

 最近遇到一個 問題,就是使用單獨的一個 xib檔案 autolayout來建立一個 UITableView的 tableHeader.  這個 xib是一個動態高度的View。        所以就有個問題,用xib 建立完的 View是 固定高度的,如果直接用 :

JMeter命令模式動態設定執行緒組和持續時間等動態傳參

背景: 1.當通過JMeter的影象化介面執行效能壓測或者場景時候,JMeter介面很容易導致介面卡死或者無響應的情況(20個執行緒數就會卡死) 現象如下: 解決方案: jmeter -n -t D:\apache-jmeter-3.0\bin\log.j

OSG立體模式動態修改相機遠近裁剪面的實現

void base call struct clam ppr cti llc 源代碼 1. 非立體模式下動態修改相機遠近裁剪面 class GLB_DLLCLASS_EXPORT CGlbGlobeClipHandler : public osg::NodeCallbac

Android動態設定GridView的高度,固定column,實現高度自適應

動態設定GridView的高度,固定column,根據gridview中的item個數設定高度: 呼叫以下方法:     [java]  view plain copy print ?

linux kernel動態設定一個GPIO輸出電平高低

以下內容為原創,歡迎轉載,轉載請說明來源:http://blog.csdn.net/masterbee/article/details/78687143 動態設定一個GPIO電平高低,比如設定GPIO51(根據CPU文件關於GPIO的介紹來計算此值) 1、建立GPIO節點 echo

socket通訊阻塞模式設定傳送和接受函式超時

今天公司專案上遇到了一個問題,就是用到socket與伺服器通訊時,接收資料會突然有一次接收不到資料。但是專案程式碼使用阻塞程式寫的,所以程式就一直卡在接收函式不能動。開始為了解決這個問題可以說是費勁周折。先是用了定時器,但是專案程式碼用的是多程序,要涉及到程序間通訊的問題

Android動態設定控制元件高度

GridView mGrid= (GridView) findViewById(R.id.gridview);  // 取控制元件mGrid當前的佈局引數 LinearLayout.LayoutParams linearParams = (LinearLayout.LayoutParams) m

動態設定titleBar的高度

在專案中有時候我們設定固定的標題欄高度,但是在有EditText輸入時彈出軟鍵盤輸入框會將titlebar壓縮,所以我們需要動態設定titlebar的高度: <resources xmlns:android="http://schemas.android.com/ap

awstats CGI模式動態生成頁面緩慢的改進

本文可以看做是 多server多站點情況下awstats日誌分析 這篇文章的下篇,在使用過程中發現awstats在cgi模式下動態生成分析報告慢的問題 (尤其是有些站點每天兩個多G的日誌,檢視起來簡直是在考驗人的耐性),本文分享一種改造這個缺點的思路。 首先再

動態設定GridView的高度,固定column,實現高度自適應

動態設定GridView的高度,固定column,根據gridview中的item個數設定高度: 呼叫以下方法: public static void setListViewHeightBased

計算listview的條目高度動態設定listv的高度

有時會遇到一種情況就是給定你一個固定高度了,讓你的條目在裡邊顯示,在條目很多的情況下是沒有問題的,但在條目只有一兩條時就會存在空白,影響美觀,所以動態設定listview也有必要; 首先是計算listview的條目總高度,這個網上一搜一大把: 其實原理就是將

Android獲取狀態列高度,動態設定控制元件高度

獲取狀態列高度//獲取status_bar_height資源的ID int resourceId = getResources().getIdentifier("status_bar_height",

總結了幾種設定UITableView的cell動態高度的方法

1.UITableView載入的順序是先得到表的行的高度,也就是 先呼叫heightForRowAtIndexPath方法,然後再呼叫cellForRowAtIndexPath,所以我們有兩個辦法實現自定義 cell高度(解決不同section的不同行高問題)。 一:改

UITableViewcell autolayout動態高度

專案中最常用的一個UI就是UITableView了,iOS7、8進一步優化了複用機制,用起來相當爽。配合Autolayout,適配工作減輕了很多。 以前做適配工作都是在heightForRow裡邊先計算出來Cell的高度,然後再CellForRow寫適配程式碼。工作量雖

VMware虛擬機在僅主機模式的網卡無法動態獲取IP

都是 嘗試 錯誤 分析 images 機器 而是 說明 本地 自己在VMware虛擬機中開啟一臺主機的時候,發現比以往的開機速度慢了好多,起初不以為然,直到用Xshell通過ssh遠程連接eth1的ip地址才發現連接失敗(這個ip是之前eth1正常的時候獲取的ip地址),後

Asp .Net Mvc在DeBug模式設定自定義IP

首先開啟所在專案下的.vs檔案(檢視隱藏檔案) 開啟config下的applicationhost.config檔案 往下拖大概100多行的位置,複製一下binding,然後設定本地ip,如果是設定ip的而非locolhost需要以管理員身份執行,才能開啟,之後重啟vs即可。   P

【Javascript】Javascript動態設定頁面高度

1.動態設定父頁面iframe高度 <body onload="iframeHeight()"> <script type="text/javascript"> function iframeHeight(){ //

設定VS201X release模式可單步除錯

在vs Debug模式下可以對程式碼進行單步除錯,檢視結果。release模式下是否也可以進行除錯呢? 答案是:yes! 下面以vs2012為例,設定release模式進行單步除錯: 1.專案---右鍵---屬性 2.配置選擇 release 3.c/c++---常規--

[Xcode10 實際操作]五、使用表格-(2)設定UITableView單元格高度

本文將演示如何製作一個自定義行高的表格檢視 在專案導航區,開啟檢視控制器的程式碼檔案【ViewController.swift】 1 import UIKit 2 3 //首先新增兩個協議。 4 //一個是表格檢視的代理協議UITableViewDelegate 5 //另一個是

HTTP 錯誤 500.22 - Internal Server Error 檢測到在整合的託管管道模式不適用的 ASP.NET 設定。(解決辦法)

(西安思源學院-----Rocky) IISExpress 500.22錯誤解決辦法(步驟): 1.獲取正在執行網站的名稱。當VS2012執行起來之後,在桌面右下角“右鍵單擊IISExpress圖示”,可以檢視網站名稱。我的網站名稱為:Stu_Enroll,如下圖所示: 2.獲取I