2012-01-23 27 views
27

Trong Xcode, tôi đã tạo một nhãn UIL mà sẽ tự động tùy thuộc vào số dòng văn bản tôi đặt trên đó. Nhưng tôi không muốn chiều cao của UILabel vượt quá một giới hạn nhất định (240 trong ví dụ của tôi), mã đi như thế này:cách thêm chức năng cuộn vào UILabel

NSString *text = @"imagine this is a huge wall of text\n\n\n" 
UILabel *myLabel = [[UILabel alloc] init]; 
[myLabel setNumberOfLines:0]; 
CGSize labelSize = [text sizeWithFont:myLabel.font constrainedToSize:CGSizeMake(280, 240) lineBreakMode:myLabel.lineBreakMode]; 
myLabel.frame = CGRectMake(0, 0, 280, labelSize.height); 

này hoạt động tốt khi văn bản của tôi là trong vòng khoảng 10-15 dòng. Nhưng nếu tôi đặt vào khoảng 40 dòng văn bản, các dòng văn bản bổ sung sẽ vượt ra ngoài UILabel của tôi và bị cắt.

làm cách nào để thêm chức năng cuộn vào myLabel để myLabel vẫn sẽ có chiều cao tối đa là 240 và tôi có thể cuộn xuống để xem các dòng văn bản bổ sung đó trong myLabel ??

+0

có thể điều này có thể giúp http://stackoverflow.com/a/16860529/1463604 – Nishant

+0

Từ 26k người dùng đã xem câu hỏi này chỉ 19 upvote !! wierd !! –

Trả lời

96

Sử dụng UITextView (reference).

Nó được thiết kế để làm chính xác điều đó. Tắt chỉnh sửa và bạn sẽ nhận được nhãn có thể cuộn.

+4

Lưu ý rằng UITextView không phải là một thay thế thả xuống cho UILabel. Ví dụ (như của iOS 6), khi bạn thiết lập một phông chữ trên một nhãn UILabel với văn bản được phân bổ, thay đổi "gậy"; khi bạn đặt phông chữ trên UITextView, thay đổi chỉ áp dụng cho bất kỳ thứ gì được phân bổ đã có trên UITextView - nếu bạn gán một chuỗi được phân bổ mới, phông chữ bạn đã đặt trước đó sẽ không được phản ánh. (Đây là kinh nghiệm của tôi làm việc với tối nay, ít nhất.) –

+1

@JonSchneider là UITextView vẫn là "quyền" để sử dụng ngày hôm nay? – rottenoats

+0

@rugdealer Tôi sợ rằng tôi không thể cung cấp cho bạn câu trả lời chắc chắn một cách dễ dàng; Tôi đã không thực hiện phát triển iOS nghiêm trọng kể từ cuối năm 2014. –

1

Bạn có thể thêm UILabel của bạn trên một UIScrollView Như thế này và cũng có thể làm như thế này ---

scrollView.backgroundColor = [UIColor clearColor]; 

     UILabel * label = [[UILabel alloc] init]; 
     [label setNumberOfLines:0]; 
     label.text=[detailDict valueForKey:@"ABC"]; 
     [label setFont:[UIFont fontWithName:@"Georgia" size:16.0]]; 
     CGSize labelsize=[label.text sizeWithFont:label.font constrainedToSize:CGSizeMake(250, 1000.0) lineBreakMode:UILineBreakModeWordWrap]; 
     int y=0; 
     label.frame=CGRectMake(38, y, 245, labelsize.height); 
     [label setBackgroundColor:[UIColor clearColor]]; 
     [label setTextColor:[UIColor whiteColor]]; 
     scrollView.showsVerticalScrollIndicator = NO; 
     y+=labelsize.height; 
     [scrollView setContentSize:CGSizeMake(200,y+50)]; 
     [scrollView addSubview:label]; 
     [label release]; 

Đây Y được sử dụng để tăng hoặc giảm kích thước nhãn như văn bản.

+1

Nó luôn luôn là một cách sai lầm để làm việc nếu bạn có lựa chọn tốt hơn. :( –

+0

Đây thực sự là một giải pháp tuyệt vời cho những ai đã mệt mỏi với số lượng ngày càng tăng của các vấn đề với hành vi di chuyển UITextView.Đặc biệt là khi trộn lẫn với các thanh điều hướng trong suốt Đôi khi nó cuộn đôi khi không. một UITextView sẽ không. –

Các vấn đề liên quan