2012-07-31 50 views
2

我想給UITableViewCell添加一個標籤子視圖。我可以很容易地將框架原點和大小設置爲特定值,但我如何使用當前/默認單元格標籤的高度和位置?UITableView中的UILabel設置大小

UILabel *labPerHour; 

    cell.textLabel.text  = @"Rate"; 

    labPerHour = [[UILabel alloc] init]; 

    //labPerHour.frame = CGRectMake(280, cell.textLabel.frame.origin.y, 80, cell.textLabel.frame.size.height); 
    labPerHour.frame = CGRectMake(260, 7, 30, 30); 
    labPerHour.text = @"$/hr"; 


    [cell addSubview:labPerHour]; 

我想要註釋行來工作..或類似的東西。

有人可以幫忙嗎?這段代碼當然是我的cellForRowAtIndexPath方法的一部分。

+0

您是否使用ios5故事板功能創建了原型單元格? – 2012-07-31 10:04:46

+0

不,我仍然在使用Xcode 4.謝謝。 – SparkyNZ 2012-07-31 21:28:32

回答

1

我不確定。可能會起作用。我以前沒有嘗試過!

CGRect theFrame = cell.textLabel.frame; 
theFrame.origin.x = 280; 
theFrame.size.width = 80; 
labPerHour.frame = theFrame; 
+0

那麼,也會(可能)將cell.textLabel的大小更改爲上面引用的特定大小..我之後的默認cell.textLabel大小 - 無論iOS最初分配給它們。 – SparkyNZ 2012-07-31 21:40:08

+0

你得到了什麼輸出?它與您在代碼中嘗試的內容相似! labPerHour.frame = CGRectMake(280,cell.textLabel.frame.origin.y,80,cell.textLabel.frame.size.height); 是不是? – Nina 2012-08-01 06:37:34

1

如果你想獲得uitable視圖的默認標籤的框架,那麼你可以試試這個

CGRect myframe; 
myframe= cell.textlabel.frame; 

現在使用這種按需求

+0

不錯的工作需要更多upvotes和正確的解決方案呢! – Daniel 2014-06-20 13:02:19

1

您需要提供的座標相對superview的座標系統。這些座標需要合理,因此您的標籤仍然位於您的單元格框架內,而不是位於其外部。

因爲每個視圖和窗口定義了自己的局部座標系, 你需要知道它的座標系統實際上是在任何 給定的時間。每次你畫一個視圖或改變其幾何圖形時,你都是這樣做的。在繪製的情況下,您可以指定相對於視圖自己的座標系的座標。 在幾何變化的情況下,您可以指定相對於超視圖座標系統的座標。 UIWindow和UIView類 都包含幫助您從一個座標系轉換爲另一個座標系 的方法。

View Programming Guide for iOS的「查看幾何和座標系」部分。

1

您需要最初設置您的單元格標籤框。

cell.textLabel.frame = CGRectMake(0, 0, 40, 10); 
+0

但它肯定有一個框架已經?我的單元格和文本標籤已經有了一個我不想更改的默認大小 - 我只是想使用該默認大小,因此我的其他子視圖標籤與單元格中的默認標籤大小相同。如果我有我的Mac與我打印出cell.textLabel.frame的內容,但將不得不等待,直到我可以回到我的Mac .. – SparkyNZ 2012-07-31 21:37:45

+0

雅已經有幀...我試圖讓幀根據您的要求,但我滾動表後的單元格textlabel框架大小...意味着在啓動時,表加載..我得到單元格文本標籤height = 0,第一次滾動後我得到實際的文本標籤大小...; – Rajneesh071 2012-08-01 08:30:46

+0

所以你必須先滾動表格才能得到textLabel的大小,或者你必須首先提供textLabel的框架大小.. – Rajneesh071 2012-08-01 08:32:43