2013-10-02 17 views
6

Trong mục tiêu-C Tôi có một nhãn UIL có nội dung 'Đang tải'. Mỗi 0,5 giây chuỗi sẽ đạt được một '.' cho đến khi có 3 chấm, sau đó nó bắt đầu lại. Vấn đề tôi phải đối mặt là chuỗi của tôi là trung tâm và khi mỗi dấu chấm xuất hiện, chuỗi sẽ nhảy. Lý do chuỗi nhảy là vì UILabel giữ trang trí đúng khoảng trắng.Văn bản UILabel bao gồm nhiều dấu cách ở cuối

Dưới đây là ví dụ về những gì hiện đang diễn ra.

+------------+ 
| Loading | 
+------------+ 
| Loading. | 
+------------+ 
| Loading.. | 
+------------+ 
| Loading... | 
+------------+ 

Và đây là điều tôi muốn xảy ra.

+------------+ 
| Loading | 
+------------+ 
| Loading. | 
+------------+ 
| Loading.. | 
+------------+ 
| Loading... | 
+------------+ 

Cho biết UILabel có chiều rộng lớn hơn và căn trái không phải là một tùy chọn. Điều này cần phải được thực hiện với văn bản.

Tôi tìm thấy điều này link, nhưng tôi vẫn không thể tìm ra.

Điều tôi hiện có là điều này.

[NSString stringWithFormat:@"%-3.3s", [@"" UTF8String]]; 
[NSString stringWithFormat:@"%-3.3s", [@"." UTF8String]]; 
[NSString stringWithFormat:@"%-3.3s", [@".." UTF8String]]; 
@"..."; 
+2

tại sao còn liên kết *** *** không một lựa chọn? nó có vẻ là giải pháp đơn giản nhất. –

+0

@MichaelDautermann vì khung nhìn mà UILabel đang ở, cực kỳ năng động và được sử dụng ở nhiều nơi. Mở rộng số lượng chức năng khổng lồ của nó là không mong muốn. – cnotethegr8

+0

Bạn có đang sử dụng phông chữ đơn cách trong nhãn đó không?Nếu không thì việc thêm dấu cách sẽ không cho bạn văn bản được căn chỉnh. –

Trả lời

4

Cách văn bản hoạt động trên nhãn là - văn bản được định dạng theo thông tin định dạng chuẩn - như cắt tỉa vv. Nếu bạn không muốn ios kiểm soát điều đó. Bạn có thể đặt một cách lập trình được gán cho văn bản. điều này không đi qua định dạng. Đây là tài liệu hướng dẫn của apple về điều đó

được gán cho văn bản Kiểu văn bản được hiển thị theo nhãn.

@property (nonatomic, copy) NSAttributedString * attributedText Thảo luận Thuộc tính này là không theo mặc định. Gán một giá trị mới cho thuộc tính này cũng thay thế giá trị của thuộc tính văn bản bằng dữ liệu chuỗi giống nhau, mặc dù không có bất kỳ thông tin định dạng nào. Trong việc thêm , gán giá trị mới sẽ cập nhật giá trị trong phông chữ, textColor và các thuộc tính liên quan đến kiểu khác để chúng phản ánh thông tin kiểu bắt đầu tại vị trí 0 trong chuỗi được phân bổ.

Về cơ bản thiết attributedtext UILabel để "tải"

1

hãy nhìn vào this

dung dịch được thêm trailing charaters nhìn thấy được và đặt chúng trong suốt.

1

Đặt label.textAlignment = NSTextAlignmentNatural. Kể từ ios 9, đây là mặc định, trước đó nó được sử dụng để được NSTextAlignmentLeft.

Bây giờ, vì văn bản của bạn phải được căn giữa, hãy quấn nó trong UIView với tất cả các lề của nhãn được neo với nhãn của khung nhìn trình bao bọc. Sau đó đặt trung tâm bao bọc thay vì nhãn.

Dưới đây là các mã:

UIView* wrapper = [[UIView alloc] init]; 
wrapper.translatesAutoresizingMaskIntoConstraints = NO; 
//This sets the wrapper at the center of where you were adding the label previously 
[wrapper.centerXAnchor constraintEqualToAnchor: superview.centerXAnchor].active = YES; 

label.translatesAutoresizingMaskIntoConstraints = NO; 
[label.leadingAnchor constraintEqualToAnchor:wrapper.leadingAnchor].active = YES; 
[label.trailingAnchor constraintEqualToAnchor:wrapper.trailingAnchor].active = YES; 
[label.topAnchor constraintEqualToAnchor:wrapper.topAnchor].active = YES; 
[label.bottomAnchor constraintEqualToAnchor:wrapper.bottomAnchor].active = YES; 

label.textAlignment = NSTextAlignmentNatural 
... 
Các vấn đề liên quan