ios7之後 根據UILabel的文字計算frame的方法,ios7uilabel

來源:互聯網
上載者:User

ios7之後 根據UILabel的文字計算frame的方法,ios7uilabel

ios7 新出來的根據label的文字和字型大小來確定label的寬高。

官方的方法是:

- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context NS_AVAILABLE_IOS(7_0);

其中NSStringDrawingOptions有四個枚舉值:

typedef NS_OPTIONS(NSInteger, NSStringDrawingOptions) { // 如果常值內容超出指定的矩形限制,文本將被截去並在最後一個字元後加上省略符號。如果沒有指定NSStringDrawingUsesLineFragmentOrigin選項,則該選項被忽略    NSStringDrawingTruncatesLastVisibleLine = 1 << 5, // Truncates and adds the ellipsis character to the last visible line if the text doesn't fit into the bounds specified. Ignored if NSStringDrawingUsesLineFragmentOrigin is not also set.  // 繪製文本時使用 line fragement origin 而不是 baseline origin    NSStringDrawingUsesLineFragmentOrigin = 1 << 0, // The specified origin is the line fragment origin, not the base line origin  // 計算行高時使用行距。(譯者註:字型大小+行間距=行距)    NSStringDrawingUsesFontLeading = 1 << 1, // Uses the font leading for calculating line heights  // 計算布局時使用圖元字形(而不是印刷字型)。    NSStringDrawingUsesDeviceMetrics = 1 << 3, // Uses image glyph bounds instead of typographic bounds} NS_ENUM_AVAILABLE_IOS(6_0);

 

attributes是文本字型的屬性:該參數要設定字型的大小。

context是內容物件,用於包含資訊:如何調整字間距以及縮放。最終,該對象包含的資訊將用於文本繪製。該參數可為 nil。 

 

    NSDictionary *attributes1 = @{NSFontAttributeName:[UIFont systemFontOfSize:20],                                  NSForegroundColorAttributeName:[UIColor redColor]                                  };        UILabel *titleLabel = [UILabel new];    titleLabel.text =  @"德瑪西亞萬歲,斷劍重鑄之日,騎士歸來之時,我們要以困難的方式搞定他。我本可以打的輕一點!";    titleLabel.numberOfLines = 0;//多行顯示,計算高度    titleLabel.textColor = [UIColor blackColor];    titleLabel.backgroundColor = [UIColor greenColor];    CGSize titleSize = [titleLabel.text boundingRectWithSize:CGSizeMake(300, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes1 context:nil].size;    titleLabel.frame = CGRectMake(10, 64, titleSize.width, titleSize.height);        [self.view addSubview:titleLabel];

 

如下:

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.