2014-01-14 81 views
0

我試圖根據文本中的文本重新調整大小(或者我允許ie108的最大寬度),並在它旁邊放置一個按鈕,下面的代碼實際上在調試時給出滿意的結果,但標籤的寬度不是相應地改變。 是否有任何特殊設置可以在xib或其他任何東西中做請幫助Iam動態調整UILabel的大小,但不起作用。

 NSDictionary *[email protected]{NSFontAttributeName:locFeedcell.lbl_location.font}; 
     CGFloat width=[locFeedcell.lbl_location.text sizeWithAttributes:attrib].width; 
     CGRect newLabelframe=locFeedcell.lbl_location.frame; 
     CGRect newButtonFrame=locFeedcell.btn_map.frame; 
     if (width>=108.00f) { 
      newLabelframe.size.width=108.00; 
     } else { 
      newLabelframe.size.width=width; 
      newButtonFrame.origin.x=locFeedcell.lbl_location.bounds.origin.x+width+4.00; 
     } 
     locFeedcell.lbl_location.frame=newLabelframe; 
     locFeedcell.btn_map.frame=newButtonFrame; 

這裏是xib文件的快照。

here is snapshot of xib file.

回答

1

更新:而不是使用locFeedcell.lbl_location.bounds.origin.x+width使用locFeedcell.lbl_location.frame.origin.x+widthbounds.origin.x始終爲0

也許在您的.xib文件中啓用了自動佈局功能?檢查實用程序窗格中的文件檢查器選項卡。 如果這沒有幫助,您可以在設置它們之前和之後發佈幀的值嗎?請記住標籤和按鈕的內存地址,並在佈置完所有內容後再次打印相應的框架。

快速提示: 您可以使用CGRectGetMaxX(locFeedcell.lbl_location.frame)而不是locFeedcell.lbl_location.bounds.origin.x+width來獲得框架的右邊緣。

+0

是自動佈局已啓用,不知道這一點。謝謝,這是一個巨大的幫助。並且還提供了小費。 –

-1

嘗試以下;

[locFeedcell.lbl_location setFrame:newLabelframe]; 
    [locFeedcell.btn_map setFrame:newButtonFrame]; 
+0

這相當於'locFeedcell.lbl_location.frame = newLabelframe; locFeedcell.btn_map.frame = newButtonFrame;' – Tobi

0

我在代碼中看不到任何邏輯問題。有兩件事你可能會檢查:

  1. 將最大寬度更改爲兩倍或更寬,使更改更明顯,因此可以更容易驗證;
  2. 確保在UI框架中設置新框架時處於UI線程中。
+0

它實際上經過我驗證,我說我通過調試點驗證了它。 –

0

如何使用Autolayout約束?

https://developer.apple.com/library/ios/documentation/userexperience/conceptual/AutolayoutPG/Introduction/Introduction.html

你有3個對象:

  1. 是最近在 - >讓我們把它lbl_recentlyAt
  2. lbl_location
  3. btn_map

您將需要3個約束:

  1. 設置你最近添加標籤的固定位置:

| -X- [lbl_recentlyAt]

  1. 設置位置標籤和按鈕的位置變化,讓我們用20p空間表示

[lbl_recentlyAt] -20- [lbl_loc通貨膨脹] -20- [btn_map]

您可能需要撥打您的手機的setNeedsLayout方法時lbl_location寬度的變化來更新佈局:https://developer.apple.com/library/ios/documentation/uikit/reference/uiview_class/uiview/uiview.html#//apple_ref/occ/instm/UIView/setNeedsLayout

[cellView setNeedsLayout] 

希望這有助於!

+0

自動佈局確實有幫助,但我試圖用簡單的方法做到這一點...使用自動layot對我來說是一件複雜的事情......但是對於知識分享來說,thnkyou ** @ adepablor **。它可能會幫助我在未來的某個地方。 –

+0

歡迎您使用任何您認爲更容易的方法。但我的建議是,現在或在可預見的將來,仔細閱讀我發佈的自動佈局鏈接。它會花費你不到一個小時,你會發現它並不那麼複雜!另外,您可以在故事板中添加約束條件,這意味着更少的代碼,這意味着更少的錯誤,這太棒了! :) – adepablor

0

//用這個自定義字體

CGFloat的寬度= [label.text sizeWithFont:[UIFont fontWithName:@ 「ChaparralPro粗體」 尺寸:40]。寬度;

//用這個系統字體

CGFloat的寬度= [label.text sizeWithFont:[UIFont systemFontOfSize:40]。寬度;

label.frame = CGRectMake(point.x,point.y,width,height);

//point.x,point.y - > origin for label;

// height - >您的標籤高度;

+0

大小與字體已棄用先生,我有什麼用途是相同的.. –