2013-04-02 45 views
5

Tôi có một văn bản (Câu chuyện của một cuốn sách). Tôi đang dùng UILabel để hiển thị nó. Nhưng nó không cho tôi xem. Tôi đang sử dụng mã sau:Văn bản không hiển thị trên UILabel khi văn bản quá lớn.

CGSize labelsize; 
    UILabel *commentsTextLabel = [[UILabel alloc] init];; 
    [commentsTextLabel setNumberOfLines:0]; 
    commentsTextLabel.textColor = [UIColor blackColor]; 
    [commentsTextLabel setBackgroundColor:[UIColor clearColor]]; 
    [commentsTextLabel setFont:[UIFont fontWithName:@"ACaslonPro-Regular"size:17]]; 
    labelsize=[story sizeWithFont:commentsTextLabel.font constrainedToSize:CGSizeMake(280, 15000) lineBreakMode:NSLineBreakByWordWrapping]; 
    commentsTextLabel.frame=CGRectMake(20, 200, 280, labelsize.height); 
    commentsTextLabel.text = story;// more than 1000 lines 

    [self.view addSubview:commentsTextLabel]; 

Khi tôi gỡ lỗi mã, tôi đã tìm thấy nhãn. Chú thích sắp xuất hiện trong trường hợp của tôi 13145.Thanh toán không hiển thị. Nếu tôi giảm 15000 xuống 11000, thì văn bản sẽ hiển thị trên màn hình với .... cuối cùng.

ghi nhãn = [kích thước câu chuyệnWithFont: commentsTextLabel.font constrainedToSize: CGSizeMake (280, 15000) lineBreakMode: NSLineBreakByWordWrapping];

Hãy giúp tôi. Cảm ơn

+0

tại sao bạn không sử dụng UITextView ....? – BhushanVU

+0

Sẽ tốt hơn nếu sử dụng UITextView không thể chỉnh sửa? Nếu không, hãy thử đặt MAXFLOAT làm giới hạn chiều cao khi tính toán kích thước nhãn. – Jeepston

+0

ở đây nhãn có nghĩa là loại biến nào? – Balu

Trả lời

0
CGSize labelsize; 
    UILabel *commentsTextLabel = [[UILabel alloc] init];; 
    [commentsTextLabel setNumberOfLines:0]; 
    commentsTextLabel.textColor = [UIColor blackColor]; 
    commentsTextLabel.text = @"The sediment-free enrichment (3) was cultivated anaerobically either in a mineral medium as described previously (19) with yeastextract (0.5%) as a carbon source or in autoclaved (1218C for 40 min) spentenrichment culture medium adjusted to pH 8.3 with sterile anaerobic 2 N NaOH.The spent culture medium was obtained by centrifugation (with anaerobic centrifuge tubes) of the enrichment culture grown in 0.5% yeast extract medium.The pH was kept within 8.0 to 8.5 by adjustment with anaerobic sterile 2 NNaOH. D. dehalogenans JW/IU-DC1 was grown in the base medium describedpreviously (19) supplemented as indicated in the text at 378C and pH 7.5."; 
    [commentsTextLabel setBackgroundColor:[UIColor clearColor]]; 
    [commentsTextLabel setFont:[UIFont fontWithName:@"ACaslonPro-Regular"size:17]]; 
    labelsize=[commentsTextLabel.text sizeWithFont:commentsTextLabel.font constrainedToSize:CGSizeMake(280, 15000) lineBreakMode:UILineBreakModeWordWrap]; 
    commentsTextLabel.frame=CGRectMake(20, 200, 280, labelsize.height); 
     [self.view addSubview:commentsTextLabel]; 
+0

mã này đang làm việc cho văn bản nhỏ tôi biết, Nhưng tại sao điều này không – user2019279

1

tôi đã trải qua những điều tương tự gần đây, kích thước UILabel được phân bổ một cách chính xác, nó chỉ là UILabel chính nó không thể giữ quá nhiều ký tự, giới hạn ký tự tối đa phụ thuộc vào phông chữ và kích thước font.

Đối với phông chữ tôi đã sử dụng, giới hạn là khoảng 13k ký tự. Công việc của tôi xung quanh là cắt ngắn chuỗi trước khi bàn tay, nó không phải là lý tưởng mặc dù.

+0

mem vẫn là một cái gì đó để được quan tâm, do đó, cắt ngắn là khôn ngoan –

+0

UILabel sẽ làm cho tất cả mọi thứ cùng một lúc vào một bộ đệm sao lưu.Thiết bị iOS chỉ có một số lượng hạn chế của bộ nhớ đồ họa để làm công việc này, vì vậy nó có vẻ như nó không thành công sau một lượng dữ liệu nhất định. Sử dụng văn bản cốt lõi hoặc một thứ gì đó như UITextView được thiết kế để vẽ nội dung của chúng hiệu quả hơn –

0

Nếu bạn muốn hiển thị hơn 1000 dòng văn bản thì tốt hơn nên sử dụng UITextView thay vì Uilabel. bạn có thể sử dụng mã sau cho UITextView

UITextView *commentsTextLabel = [[UITextView alloc] init]; 
    commentsTextLabel.frame=CGRectMake(20, 20, 280,100); 
    commentsTextLabel.text = story; 
    commentsTextLabel.editable=NO; 
    commentsTextLabel.scrollEnabled=YES; 
    //commentsTextLabel.numberOfLines=1; 
    commentsTextLabel.textColor = [UIColor blackColor]; 
    //[commentsTextLabel setBackgroundColor:[UIColor clearColor]]; 
    //[commentsTextLabel setFont:[UIFont systemFontOfSize:17]]; 
    commentsTextLabel.font=[UIFont systemFontOfSize:17]; 
    commentsTextLabel.backgroundColor=[UIColor clearColor]; 
    [self.view addSubview:commentsTextLabel]; 

hy vọng điều này sẽ giúp bạn.

-1

bạn có thể đặt nhiều dòng văn bản trong UILabel để giải quyết vấn đề của mình.

textLabel.lineBreakMode = NSLineBreakByWordWrapping; 
textLabel.numberOfLines = 0; 
textLabel.adjustsFontSizeToFitWidth = YES; 

Courtesy: - https://stackoverflow.com/a/990244/1865424

Nó có thể giúp bạn.

7

UILabel sẽ hiển thị tất cả văn bản của nó cùng một lúc vào bộ đệm sao lưu. Các thiết bị iOS chỉ có một số lượng bộ nhớ đồ họa hạn chế để thực hiện công việc này, vì vậy nó sẽ thất bại khi dữ liệu đồ họa vượt quá một kích thước nhất định.

Đối với số lượng lớn văn bản, bạn nên sử dụng Văn bản chính hoặc thứ gì đó như UITextView làm cho văn bản theo yêu cầu hiệu quả hơn nhiều.

+0

Tôi có cùng một vấn đề và giải quyết nó bằng cách sử dụng một số 'UILabels'. đã thử nó trong iPad 2, nó hết bộ nhớ và ứng dụng bị lỗi. – Octan

3

Sử dụng mã này nó sẽ thấy nhãn ở phù hợp với kích thước của nhãn của bạn

label.adjustsFontSizeToFitWidth = YES; 
1

Bạn cần phải thêm thử nghiệm gói với nhãn hoặc nó sẽ chảy ra khỏi các cạnh.

self.label.lineBreakMode = NSLineBreakByWordWrapping; 
Các vấn đề liên quan