2011-01-16 34 views
5

Tôi có một NSImageView và muốn thêm bóng. Tôi đã thử làm theo cách lập trình với:Thêm Bóng vào NSImageView

NSShadow *shadow = [[[NSShadow alloc] init] autorelease]; 
[shadow setShadowBlurRadius:4.0f]; 
[shadow setShadowOffset:CGSizeMake(4.0f, 4.0f)]; 
[shadow setShadowColor:[NSColor blackColor]]; 

[view setShadow:shadow]; 

Nhưng nó sẽ không xuất hiện. Bất kỳ ý tưởng? Cảm ơn.

+0

Bạn có thể thử tạo NSImage trống (có cùng kích thước với hình bạn muốn vẽ), 'lockFocus' trên đó, đặt bóng và vẽ bản gốc vào hình mới (và' mở khóaFocus'). Tôi sử dụng kỹ thuật đó để tô màu hình ảnh; không thể đảm bảo nó sẽ làm việc cho bóng tối. – Richard

Trả lời

9

Bạn phải đặt thông số của bóng. Theo mặc định, đó là tất cả các số không, do đó, nó không có hiệu lực nhìn thấy được trên một khung nhìn.

Xem -setShadowColor:, -setShadowRadius:-setShadowOffset: trên NSShadow, tôi tin tưởng.

+0

Tôi đã thử thêm tất cả những điều trên để không có hiệu lực. Tôi đã cập nhật mẫu ở trên. –

+2

Chế độ xem của bạn cũng được hỗ trợ bởi 'CALayer'? Nếu không, bạn phải bật tính năng Sao lưu lõi động bằng cách gửi 'setWantsLayer:' (với giá trị 'YES') vào chế độ xem của bạn trước khi đặt bóng. –

+0

@ Jonathan: đó là những gì tôi đã về để gửi như một câu trả lời thực sự. 'setShadow:' chỉ cần sao chép các thuộc tính của shadow vào lớp Core Animation, vì vậy khung nhìn phải được hỗ trợ bởi một 'CALayer'. Điều này cũng đáng chú ý khi bạn muốn áp dụng một bóng cho một khung nhìn bằng cách sử dụng Interface Builder. – Joost

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