iOS學習:UILabel和sizeWithFont方法


 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     //如果指定區域的寬度指定,而字符串要顯示的區域的高度超過了指定區域的高度,則高度返回0
17     //核心:多行顯示,指定寬度,獲取高度
18     CGSize labelSize = [text sizeWithFont:font
19                          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)test
45 {
46     NSString *text = @"asfawlfaw;lojf";
47     UIFont *font = [UIFont fontWithName:@"Arial" size:20.0f];
48     
49     //字符串在指定區域內按照指定的字體顯示時,需要的高度和寬度(寬度在字符串只有一行時有用)
50     //一般用法:指定區域的寬度而高度用MAXFLOAT,則返回值包含對應的高度
51     //如果指定區域的寬度指定,而字符串要顯示的區域的高度超過了指定區域的高度,則高度返回0
52     //核心:多行顯示,指定寬度,獲取高度
53     CGSize labelSize = [text sizeWithFont:font
54                         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:font
65                     constrainedToSize:CGSizeMake(MAXFLOAT, 100.0f)];
66     
67     
68     //字符串用指定字體指定寬度和指定換行方式顯示時,需要的高度和寬度
69     //雖然指定了換行方式,在實際計算時也會換行,但返回結果只會返回第一行的高度和寬度
70     //如果指定寬度小於字符串寬度,則寬度返回0
71     //核心:貌似沒有什么用
72     CGSize size3 = [text sizeWithFont:font
73                              forWidth:400.0f
74                         lineBreakMode:NSLineBreakByWordWrapping];
75     
76     CGFloat f = 0.0f;
77     
78     //雖然指定了換行方式,在實際計算時也會換行,但返回的結果只是第一行的高度很寬度
79     //指定了應該顯示的字體,最小的字體,實際的字體,在實際計算中,如果寬度不夠,則盡量縮小字符串的字體直至能夠一行全部顯示,如果縮到最小還不能完全顯示字符串,則進行截斷,返回截斷后的字符串的高度和寬度
80     //字體實際的大小,存放在 actualFontSize里
81     CGSize size4 = [text sizeWithFont:font
82                           minFontSize:10.0f
83                        actualFontSize:&f
84                              forWidth:100.0f
85                         lineBreakMode:NSLineBreakByWordWrapping];
86 
87 }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM