2012-08-17 110 views
1

在我的情況來計算一個UILabel frame.origin.x下面代碼,使其在右側:如何計算frame.size.width

writerNameLabel.frame = CGRectMake(cell.frame.size.width - writerNameLabel.frame.size.width - 80.......) 

NSLog(@" writerNameLabel frame width: %f",writerNameLabel.frame.size.width); 
NSLog(@" cell frame width: %f",cell.frame.size.width); 
NSLog(@" cell - writerNameLabel frame width: %f",cell.frame.size.width - writerNameLabel.frame.size.width); 
NSLog(@" writerNameLabel frame x: %f",writerNameLabel.frame.origin.x); 


2012-08-17 14:43:36.895 writerNameLabel frame width: 38.000000 
2012-08-17 14:43:36.899 cell frame width: 320.000000 
2012-08-17 14:43:36.902 cell - writerNameLabel frame width: 282.000000 
2012-08-17 14:43:36.904 writerNameLabel frame x: 240.000000 

---- 

2012-08-17 14:43:36.924 writerNameLabel frame width: 102.000000 
2012-08-17 14:43:36.928 cell frame width: 320.000000 
2012-08-17 14:43:36.931 cell - writerNameLabel frame width: 218.000000 
2012-08-17 14:43:36.934 writerNameLabel frame x: 240.000000 

的問題是,這

cell.frame.size.width - writerNameLabel.frame.size.width

在我的計算不工作的一部分,它只是返回的

cell.frame.size.width - 80

,爲什麼呢?我做錯了什麼嗎?

請指教。謝謝。

+0

你有一個框架已經爲您的標籤嗎?如果不是,則默認爲{0,0,0,0}。 – 2012-08-17 06:58:13

回答

1

因爲當時writerNameLabel.frame.size.width的值爲0。

3

我懷疑問題是你最初沒有設置標籤的框架,默認情況下它是{ 0, 0, 0, 0},這就是爲什麼它在計算中無效。

+0

對不起,我刪除了帖子。我誤解了OP的要求。 – 2012-08-17 07:03:38

+0

@NSPostWhen不用擔心,交配。 :) – 2012-08-17 07:04:15

0

你如何初始化writerNameLabel?你應該使用initWithFrame,否則它的大小(0,0)。

只是信息:

我假設你正在使用的UITableViewCell因爲你的變量名是細胞:) 在這種情況下,如果你使用cell.contentView.frame.size.width而不是細胞會更好.frame.size.width。因此,您可以防止與單元格的附件視圖重疊的writerNameLabel。最簡單的方法是使用UITableViewCell實例已經(默認)的標籤。

1

框的默認值是{0,0,0,0}默認