Tôi đang cố gắng để có được một NSString chia thành các dòng để phù hợp với chiều rộng mong muốn (vì nó sẽ xảy ra bên trong sizeWithFont:constrainedToSize:
). Có cách nào tốt hơn để thực hiện điều này hơn là đoán xem các vi phạm sẽ xảy ra ở đâu trong số sizeWithFont
?Breaking NSString thành các dòng (để vừa với chiều rộng mong muốn)
Trả lời
Nếu NSLayoutManager
thực sự không khả dụng, bạn có thể bị kẹt với giải pháp không hiệu quả hơn: bắt đầu bằng từ đầu tiên của chuỗi, thêm mỗi từ tiếp theo và sử dụng phương thức sizeWithFont:
(v.v.) trên chuỗi kết quả. Khi chiều cao của các thay đổi được trả về CGSize
, từ được nối thêm gần đây nhất là từ gây ra ngắt dòng và do đó bạn có thể tách chuỗi đó ở đó.
Đó là những gì tôi đã kết thúc lên với – Pyetras
Cập nhật: Điều này dường như chỉ áp dụng trên nền tảng Mac. Mặc dù NSLayoutManager được tham chiếu cụ thể trong Hướng dẫn vẽ chuỗi của iPhone (kể từ tháng 12 năm 2009), không phải NSAttributedString cũng không có sẵn trên nền tảng iPhone. Xin lỗi vì tiếng ồn.
gốc đáp ứng
NSLayoutManager là bạn của bạn nếu bạn đang tìm kiếm để chia chuỗi mình thành dòng một chiều rộng nhất định, với một tập hợp các thuộc tính (ví dụ, bạn cần phải biết những nơi thực tế nơi chuỗi được bao bọc).
Nếu bạn chỉ tìm cách để quấn dây chuyền khi vẽ và bạn không quan tâm đâu, NSAttributedString của (AppKit bổ sung) các phương pháp -drawInRect: hoặc -drawWithRect:options: sẽ làm tốt.
NSLayoutManager hoặc NSAttributedString không có sẵn trên iPhone. –
Tôi sẽ không vẽ các dòng (ngay lập tức), do đó, không NSAttributedString cũng không bổ sung NSString + UIKit sẽ giúp đỡ. – Pyetras
Ole: Khó hiểu. NSLayoutManager được tham chiếu cụ thể trong Hướng dẫn lập trình chuỗi trong thư viện của Trung tâm iPhone Dev: http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/Strings/Articles/DrawingStrings.html –
Cập nhật: Dựa vào nhận xét bên dưới (bạn có thể vẽ chuỗi, nhưng không thể vẽ nền để che chuỗi), tôi nghĩ đặt cược tốt nhất của bạn là sử dụng UIWebView và sử dụng CSS để vẽ lý lịch.
Các NSString UIKit Additions thể phù hợp với nhu cầu của bạn, đặc biệt là
- (CGSize)drawInRect:(CGRect)rect withFont:(UIFont *)font
lineBreakMode:(UILineBreakMode)lineBreakMode;
và/hoặc
- (CGSize)drawInRect:(CGRect)rect withFont:(UIFont *)font
lineBreakMode:(UILineBreakMode)lineBreakMode
alignment:(UITextAlignment)alignment;
Kiểm tra các ý kiến về câu hỏi và câu trả lời của Joshua bên dưới — vẽ các dòng không phải là vấn đề. Anh ta thực sự không cần biết điểm ngắt dòng là gì, với mục đích vẽ một nền chỉ kéo dài đến cuối mỗi dòng. –
NSLayoutManager có sẵn từ iOS 7. Tài liệu là here.
- 1. Làm cách nào để tôi giữ lại một NSString để vừa với chiều rộng cố định?
- 2. jQuery plugin để vừa với văn bản thành phần tử chiều rộng/chiều cao được xác định
- 3. Làm cho nội dung vừa với chiều rộng của div
- 4. Vừa với Notebook Chiều rộng ImageSize trong Mathematica
- 5. jQuery: rút ngắn độ dài chuỗi để vừa với chiều rộng được đặt
- 6. Thanh điều hướng hai chiều không mong muốn
- 7. Chiều rộng của phao không còn co lại để vừa khi nội dung được quấn vào nhiều dòng
- 8. Mở rộng kích thước phông chữ để vừa với chiều dọc trong UILabel
- 9. Chia tỷ lệ phương trình cho vừa với chiều rộng trang chính xác
- 10. Làm cách nào để vừa với chiều rộng của hộp văn bản với một tập hợp các cột trong lưới?
- 11. Các sự cố không mong muốn với PHP PHAR
- 12. Chiều rộng CSS: 100% không vừa màn hình
- 13. Cắt bớt một chuỗi độc đáo để vừa với chiều rộng pixel nhất định
- 14. Làm cách nào để đặt chiều rộng QComboBox cho vừa với mục lớn nhất?
- 15. Mở rộng Macro tiền xử lý trước không mong muốn
- 16. Chia tỷ lệ UIImageView để vừa với chiều rộng màn hình
- 17. Giới hạn chiều rộng đường viền thành chiều rộng văn bản trong một phần tử khối
- 18. Lấy chiều cao NSString
- 19. Dòng văn bản không mong muốn trong div
- 20. SizeToContent vẽ đường viền không mong muốn
- 21. In Vừa với Chiều rộng bằng Bảng tính XML trong Excel
- 22. Linq2SQl mong muốn tải với nhiều DataLoadOptions
- 23. Gần đúng đường bao gồm các điểm không mong muốn
- 24. Định dạng chiều rộng dòng tiêu chuẩn
- 25. css - thu nhỏ div cha để vừa với chiều rộng của một đứa trẻ và hạn chế chiều rộng của đứa trẻ khác
- 26. truy vấn SQL để lấy dòng duy nhất của dữ liệu với giá trị mong muốn cho các cột
- 27. Các dòng không mong muốn xuất hiện trong canvas html5 sử dụng các lát gạch
- 28. ggplot - dòng thay đổi chiều rộng
- 29. đặt chiều rộng động chỉ với CSS?
- 30. Rails tải trọng mong muốn?
Bạn có thể đi sâu hơn một chút chi tiết về lý do bạn cần các dòng tách biệt không? Nếu bạn chỉ muốn vẽ chuỗi trong một không gian nhất định thì điều này khá đơn giản. –
Tôi đang tạo nền - giống như hình nền bạn nhận được khi chọn văn bản - cho nhãn. Chiều rộng của nó thay đổi cho mỗi dòng (với chiều dài khác nhau), vì vậy tôi sẽ cần chúng một cách riêng biệt. – Pyetras