2011-07-24 26 views
7

Mục tiêu của tôi rất đơn giản: Từ một nhãn UILabel lấy trực tiếp chuỗi con trong văn bản của nhãn. Từ tìm kiếm mở rộng, dường như không có bất kỳ thứ gì được tích hợp để xử lý việc này. Những người khác đã đặt câu hỏi tương tự, nhưng không có câu hỏi nào được trả lời đầy đủ ở đây trên Stackoverflow.UILabel nhận CGRect cho chuỗi con của văn bản

// Something like this perhaps (added as a category) 
CGRect rect = [myLabel rectForRange:NSMakeRange(3, 5)]; 

Một ví dụ về những gì nó có thể được sử dụng cho (chỉ để làm rõ những gì tôi đang tìm kiếm):

example of rect

Trả lời

7

Điều này chủ yếu là cần thiết cho một rects nhân vật, vì vậy tôi đã đi điên và đã viết một số mã có thể tính chính xác rect cho UILabel cơ bản nhất. UILineBreakMode chuẩn và căn chỉnh văn bản.

Tôi đã hy vọng rằng nếu tôi phát hành nó cho những người dân mã đóng góp vào nó và cải thiện nó, đặc biệt là kể từ khi tôi không biết rất nhiều về văn bản rendering!

Mã:

https://gist.github.com/1278483

+0

Chào Erik. Nó sẽ thực sự tuyệt vời nếu bạn có thể giúp tôi [ở đây] (http://stackoverflow.com/questions/8860520/find-coordinates-of-a-substring-in-uilabel). – Nitish

2

Bạn nói đúng: đây không phải là một trong xây dựng- một phần của UILabel.

Nếu bạn thực sự cần điều này, hãy phân loại UILabel, sử dụng CoreText để triển khai -drawRect: và bạn sẽ có thể compute the rect for a range via CTLineGetOffsetForStringIndex(), CTFrameGetLineOrigins(), and CTLineGetTypographicBounds(). Nếu văn bản trong phạm vi được đặt ra để vượt qua ngắt dòng, điều này sẽ trở nên phức tạp; bạn có thể sẽ muốn nhiều rects.

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