iOS7中計算UILabel中字串的高度

來源:互聯網
上載者:User

標籤:blog   http   color   io   os   ar   使用   sp   div   

iOS7中計算UILabel中字串的高度

iOS7中出現了新的方法計算UILabel中根據給定的Font以及str計算UILabel的frameSize的方法.本人提供category如下:

UILabel+StringFrame.h

////  UILabel+StringFrame.h//  LabelHeight////  Copyright (c) 2014年 Y.X. All rights reserved.//#import <UIKit/UIKit.h>@interface UILabel (StringFrame)- (CGSize)boundingRectWithSize:(CGSize)size;@end

UILabel+StringFrame.m

////  UILabel+StringFrame.m//  LabelHeight////  Copyright (c) 2014年 Y.X. All rights reserved.//#import "UILabel+StringFrame.h"@implementation UILabel (StringFrame)- (CGSize)boundingRectWithSize:(CGSize)size{    NSDictionary *attribute = @{NSFontAttributeName: self.font};        CGSize retSize = [self.text boundingRectWithSize:size                                             options:                      NSStringDrawingTruncatesLastVisibleLine |                      NSStringDrawingUsesLineFragmentOrigin |                      NSStringDrawingUsesFontLeading                                          attributes:attribute                                             context:nil].size;        return retSize;}@end

現在來測試代碼:

如下:

我們來實驗一下使用自訂字型測試一回:

顯示結果:

無論自訂字型還是系統字型都是可以完美使用的.

 

以下代碼供你測試:

    // 字串    NSString *str = @"日落時分,沏上一杯山茶,聽一曲意境空遠的《禪》,心神隨此天籟,沉溺於玄妙的幻境裡。彷彿我就是那穿梭於葳蕤山林中的一隻飛鳥,時而盤旋穿梭,時而引吭高歌;彷彿我就是那潺潺流瀉于山澗的一汪清泉,漣漪輕盈,浩淼長流;彷彿我就是那竦峙在天地間的一座山巒,偉岸高聳,從容綿延。我不相信佛,只是喜歡玄冥空靈的梵音經貝,與慈悲淡然的佛境禪心,在清歡中,從容幽靜,自在安然。一直嚮往走進青的山,碧的水,體悟山水的絢麗多姿,領略草木的興衰榮枯,傾聽黃天厚土之聲,探尋宇宙自然的妙趣。走進了山水,也就走出了喧囂,給身心以清涼,給精神以沉澱,給靈魂以升華。";        // 初始化label    UILabel *label = [UILabel new];    label.backgroundColor = [UIColor whiteColor];    [self.view addSubview:label];        // label擷取字串    label.text = str;        // label擷取字型    label.font = [UIFont fontWithName:nil size:18];        // 根據擷取到的字串以及字型計算label需要的size    CGSize size = [label boundingRectWithSize:CGSizeMake(320, 0)];        // 設定無限換行    label.numberOfLines = 0;        // 設定label的frame    label.frame = CGRectMake(0.0f, 50.0f, size.width, size.height);

 

 

iOS6可以使用如下方式來擷取字串的size值

        size = [text sizeWithFont:font
                  constrainedToSize:size
                       lineBreakMode:NSLineBreakByCharWrapping];

 但此方法已經在iOS7中被廢棄了,注意.

 

 

 

//  擷取字串的大小  ios7

 

- (CGSize)getStringRect:(NSString*)aString

{

    CGSize size;

    

    NSAttributedString* atrString = [[NSAttributedStringalloc] initWithString:aString];

    

    NSRange range = NSMakeRange(0, atrString.length);

    

    NSDictionary* dic = [atrString attributesAtIndex:0 effectiveRange:&range];

    

    size = [aString boundingRectWithSize:CGSizeMake(237, 200)  options:NSStringDrawingUsesLineFragmentOriginattributes:diccontext:nil].size;

    

    return  size;

    

}

 

 

//  擷取字串的大小  ios6

- (CGSize)getStringRect_:(NSString*)aString

{

    CGSize size;

    

    UIFont *nameFont=[UIFont fontWithName:@"Helvetica" size:13];

    size=[aString sizeWithFont:nameFont constrainedToSize:CGSizeMake(237, 200) lineBreakMode:NSLineBreakByCharWrapping];

    return  size;

}

原文:http://www.cnblogs.com/YouXianMing/p/3706269.html

iOS7中計算UILabel中字串的高度

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.