Tôi cần đo chiều rộng pixel của một chuỗi trong Cocoa Touch. Bất cứ ai có thể chỉ cho tôi một liên kết giải thích làm thế nào để làm điều này?Đo chiều rộng pixel của một chuỗi
Trả lời
Trên hệ điều hành iPhone, hơi khác một chút, thay vào đó hãy xem NSString UIKit Additions Reference. Ý tưởng cũng giống như trong Cocoa cho Mac OS X, nhưng có nhiều phương pháp hơn.
Đối với dòng duy nhất sử dụng văn bản:
- (CGSize)sizeWithFont:(UIFont *)font
forWidth:(CGFloat)width
lineBreakMode:(UILineBreakMode)lineBreakMode
Và đối với các văn bản multiline sử dụng:
- (CGSize)sizeWithFont:(UIFont *)font
constrainedToSize:(CGSize)size
lineBreakMode:(UILineBreakMode)lineBreakMode
Việc sử dụng một UILineBreakMode
như là đối số cho dòng duy nhất của văn bản có thể gây nhầm lẫn, nhưng đây là vì ngắt dòng cũng được sử dụng để xác định cách cắt ngắn văn bản.
Điều này dường như làm việc tốt cho phông chữ thông thường nhưng nó dường như không đưa ra giới hạn chính xác cho phông chữ như Zapfino. Mã mẫu có tại http://paste.lisp.org/display/130803 và ảnh chụp màn hình đầu ra là http://ScrnSht.com/juixwk. Bất kỳ ý tưởng tại sao và làm thế nào để giải quyết nó? – trss
không được chấp nhận trong iOS7 .. tài liệu không đề cập đến bất kỳ sự thay thế nào .. có bất kỳ sự thay thế nào không? – abbood
Tài liệu iOS7 hiện tại (Xcode 5.0.1) tham chiếu đến các bản thay thế (có xu hướng chỉ dành cho iOS7). – JLundell
Hãy xem NSString Application Kit Additions Reference, cụ thể là boundingRectWithSize:options:attributes:
. Giá trị được trả về bởi thường trình đó sẽ cho bạn chiều rộng của NSString
.
Tài liệu không rõ ràng về cách sử dụng 'boundingRectWithSize: options: attributes:'. Nó sẽ là tốt đẹp nếu bạn có thể thêm một ví dụ về cách thực sự sử dụng phương pháp này để đo một chuỗi với một phông chữ cụ thể. – PeyloW
Giải pháp trên hiện không được chấp nhận. Kiểm tra điều này cho iOS 7+
sizeWithFont:constrainedToSize:lineBreakMode
không còn được dùng nữa. Sử dụng đoạn mã bên dưới,
Bạn không nên yêu cầu câu trả lời khách quan chung khi câu hỏi này thực sự về các tính năng trong Cocoa cho Mac OS X hoặc Cocoa Touch cho iPhone OS. Objective-C chỉ là ngôn ngữ lập trình mà cả Cocoa và Cocoa Touch đều sử dụng. – PeyloW
Có sử dụng mục tiêu-c nào khác ngoài lập trình cho Mac OS hoặc IOS không? Nếu vậy, nó có ý nghĩa không? –