uilabel 自適應

有時一個UILable的text內容是變化的,並且差別有很大,  html

  1. 需求上要求UILabel的大小高寬可以自適應text的內容。代碼例子:   
  2. myLable=[[UILabel alloc] initWithFrame:CGRectMake(0, 23, 175, 33)];   
  3. [myLable setFont:[UIFont fontWithName:@"Helvetica" size:10.0]];   
  4. [myLable setNumberOfLines:0];   
  5. [myLable setBackgroundColor:[UIColor clearColor]];   
  6. [myAdView addSubview:myLable];   
  7. UIFont *font = [UIFont fontWithName:@"Helvetica" size:10.0];   
  8. CGSize size = [text sizeWithFont:font constrainedToSize:CGSizeMake(175.0f, 2000.0f)   
  9.                                           lineBreakMode:UILineBreakModeWordWrap];   
  10. CGRect rect=myLable.frame;   
  11. rect.size=size;   
  12. [myLable setFrame:rect];   
  13. [myLable setText:text];  
  14.   
  15. 核心的是  
  16. CGSize size = [text sizeWithFont:font constrainedToSize:CGSizeMake(175.0f, 2000.0f)   
  17.                     lineBreakMode:UILineBreakModeWordWrap];  
  18. 來預算text顯示時寬高。  
  19. 其中font是顯示的字體,constrainedToSize是最大可接受的字符串寬高(例子中是寬175,高2000)  
  20. lineBreakMode換行類型(UILineBreakModeWordWrap指的單詞邊界換行)  

 

sizeWithFont:constrainedToSize:lineBreakMode:

Returns the size of the string if it were rendered with the specified constraints.ios

- ( CGSize)sizeWithFont:( UIFont *) font constrainedToSize:( CGSize) size lineBreakMode:( UILineBreakMode) lineBreakMode
Parameters
font

The font to use for computing the string size.app

size

The maximum acceptable size for the string. This value is used to calculate where line breaks and wrapping would occur.less

lineBreakMode

The line break options for computing the size of the string. For a list of possible values, see NSLineBreakMode.字體

Return Value

The width and height of the resulting string’s bounding box. These values may be rounded up to the nearest whole number.this

Discussion

You can use this method to obtain the layout metrics you need to draw a string in your user interface. This method does not actually draw the string or alter the receiver’s text in any way.spa

This method computes the metrics needed to draw the specified string. This method lays out the receiver’s text and attempts to make it fit the specified size using the specified font and line break options. During layout, the method may break the text onto multiple lines to make it fit better. If the receiver’s text does not completely fit in the specified size, it lays out as much of the text as possible and truncates it (for layout purposes only) according to the specified line break mode. It then returns the size of the resulting truncated string. If the height specified in the size parameter is less than a single line of text, this method may return a height value that is bigger than the one specified.rest

Availability
  • Available in iOS 2.0 and later.
Declared In
UIStringDrawing.h
相關文章
相關標籤/搜索