iOS學習:UILabel和sizeWithFont方法

來源:互聯網
上載者:User
 1 - (void)viewDidLoad 2 { 3     [super viewDidLoad]; 4     // Do any additional setup after loading the view, typically from a nib. 5      6     NSString *text = @"tw ia nwifei xantianwif eixan tianwi feixan"; 7      8     //設定字型,包括字型及其大小 9     UIFont *font = [UIFont fontWithName:@"Arial" size:50.0f];10     11     //label可設定的最大高度和寬度12     CGSize maxSize = CGSizeMake(320.f, MAXFLOAT);13     14     //字串在指定地區內按照指定的字型顯示時,需要的高度和寬度(寬度在字串只有一行時有用)15     //一般用法:指定地區的寬度而高度用MAXFLOAT,則傳回值包含對應的高度16     //如果指定地區的寬度指定,而字串要顯示的地區的高度超過了指定地區的高度,則高度返回017     //核心:多行顯示,指定寬度,擷取高度18     CGSize labelSize = [text sizeWithFont:font19                          constrainedToSize:CGSizeMake(320.f, MAXFLOAT)20                              lineBreakMode:NSLineBreakByWordWrapping];21 22     //指定用於顯示的地區23     CGRect rect = CGRectMake(0.0f, 0.0f, labelSize.width, labelSize.height);24     25     //CGRectZero表示(0,0,0,0),即留待後面再設定26     UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectZero];27     28     //label預設只顯示一行,把numberofline設為0,即表示不限制行數,根據實際顯示29     [myLabel setNumberOfLines:0];30     31     myLabel.frame = rect;32     myLabel.text = text;33     myLabel.font = font;34     myLabel.textColor = [UIColor grayColor];35     36     //把label加入到view裡,這樣才能顯示37     [self.view addSubview:myLabel];38     39     //引用計數減一,因為在上一行 addSubview 時,view已經把mylabel的引用計數加一了40     [myLabel release];41     42 }43 44 -(void)test45 {46     NSString *text = @"asfawlfaw;lojf";47     UIFont *font = [UIFont fontWithName:@"Arial" size:20.0f];48     49     //字串在指定地區內按照指定的字型顯示時,需要的高度和寬度(寬度在字串只有一行時有用)50     //一般用法:指定地區的寬度而高度用MAXFLOAT,則傳回值包含對應的高度51     //如果指定地區的寬度指定,而字串要顯示的地區的高度超過了指定地區的高度,則高度返回052     //核心:多行顯示,指定寬度,擷取高度53     CGSize labelSize = [text sizeWithFont:font54                         constrainedToSize:CGSizeMake(320.f, MAXFLOAT)55                             lineBreakMode:NSLineBreakByWordWrapping];56     57     //字串用指定字型進行單行顯示時,需要的高度和寬度58     CGSize size1 = [text sizeWithFont:font];59     60     //字串用指定字型在指定地區進行單行顯示時,需要的高度和寬度;61     //一般的用法是,指定地區的高度固定而寬度用MAXFLOAT,則傳回值包含對應的寬度62     //如果指定地區的寬度不夠,則寬度返回0;高度不夠則沒影響63     //核心:單行顯示,指定地區的寬度要夠大,擷取寬度64     CGSize size2 = [text sizeWithFont:font65                     constrainedToSize:CGSizeMake(MAXFLOAT, 100.0f)];66     67     68     //字串用指定字型指定寬度和指定換行方式顯示時,需要的高度和寬度69     //雖然指定了換行方式,在實際計算時也會換行,但返回結果只會返回第一行的高度和寬度70     //如果指定寬度小於字串寬度,則寬度返回071     //核心:貌似沒有什麼用72     CGSize size3 = [text sizeWithFont:font73                              forWidth:400.0f74                         lineBreakMode:NSLineBreakByWordWrapping];75     76     CGFloat f = 0.0f;77     78     //雖然指定了換行方式,在實際計算時也會換行,但返回的結果只是第一行的高度很寬度79     //指定了應該顯示的字型,最小的字型,實際的字型,在實際計算中,如果寬度不夠,則盡量縮小字串的字型直至能夠一行全部顯示,如果縮到最小還不能完全顯示字串,則進行截斷,返回截斷後的字串的高度和寬度80     //字型實際的大小,存放在 actualFontSize裡81     CGSize size4 = [text sizeWithFont:font82                           minFontSize:10.0f83                        actualFontSize:&f84                              forWidth:100.0f85                         lineBreakMode:NSLineBreakByWordWrapping];86 87 }
相關文章

聯繫我們

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