2009-11-18 20 views
14

Tôi muốn tạo thanh trạng thái với hiệu ứng văn bản như trong Safari hoặc iTunes, tức là văn bản được đánh dấu.Thêm bóng (hiệu ứng văn bản lõm) vào nhãn ca cao mà không làm giảm chất lượng hiển thị văn bản

example

Tuy nhiên, nếu tôi chỉ cần thêm bóng trong Interface Builder sử dụng bảng điều khiển Core Animation, tồi tệ nhất văn bản đá render OS X trong:

wheres my subpixel

lừa là gì để có được lõm văn bản trên một nhãn giữ hiển thị đúng pixel phụ?

Trả lời

35

Có một cách built-in để làm điều này:

[[yourTextField cell] setBackgroundStyle:NSBackgroundStyleRaised]; 
+1

Có cách nào để chỉnh sửa màu nổi bật của điều này không? – coneybeare

+0

Tôi không nghĩ vậy, điều này được xử lý nội bộ bởi hệ thống. Bạn sẽ cần phải viết mã vẽ của riêng bạn để thay đổi nó. –

6

Đó là một mẹo cũ giá rẻ: Bạn vẽ văn bản màu trắng ở độ lệch và sau đó vẽ văn bản màu đen lên trên nó.

Có móc cho bóng trong hệ thống vẽ văn bản, NSShadowAttributeName của NSAttributedString. Nhưng thử nghiệm điều này, nó dường như giết sự khử răng cưa subpixel.

+0

+1 Làm cho một awful nhiều ý nghĩa. Đẹp nhất. –

+2

Không có giải pháp nào tốt hơn? Một trong nhiều API văn bản OS X phải làm đúng cách ... Tôi không muốn thêm nhãn khác vì điều này sẽ khó duy trì hơn và có thể gây phiền toái cho người dùng Voice Over. – Kornel

+1

Câu trả lời được giải quyết bằng cách vẽ thêm văn bản, không nhất thiết phải thêm nhãn phụ. Bạn có thể tạo một lớp con tùy chỉnh của NSTextField với mã vẽ tùy chỉnh. Sau đó, bạn chỉ cần một nhãn. –

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