2013-01-08 17 views
5

Tôi có một NSWindow được cập nhật mỗi giây để hiển thị thời gian hiện tại.Làm thế nào để tìm hiểu xem bất kỳ phần nào của NSWindow hiện có thể nhìn thấy (không chỉ được sắp xếp trong)

Bản vẽ này khá phức tạp về bộ vi xử lý và tôi muốn tránh làm việc đó trong khi cửa sổ là hoàn toàn bị che khuất bởi các cửa sổ khác.

Thật không may, [NSWindow isVisible] không hiển thị cửa sổ có thực sự hiển thị trên màn hình hay không, nhưng chỉ cho dù đó là trên màn hình vào lúc này. Có nghĩa là nếu cửa sổ nằm trong danh sách cửa sổ nhưng hoàn toàn bị che khuất bởi các cửa sổ khác isVisible == YES, drawRect tùy chỉnh của tôi được gọi và tôi sẽ vẽ mọi thứ vào bộ đệm không bao giờ được sử dụng.

Có cách nào để phát hiện xem Cửa sổ và nội dung của Cửa sổ là trên thực tế có thể nhìn thấy trên màn hình không?

Mọi trợ giúp sẽ được đánh giá cao.

Trả lời

4

Ngày 10.9, bạn có thể sử dụng NSWindow's -occlusionState và phương thức ủy nhiệm liên quan.

Từ release notes:

Windows được coi occluded nếu toàn bộ nội dung của họ, trong đó có thanh tiêu đề và thanh công cụ, là 100% bao phủ bởi một cửa sổ mờ đục. Windows cũng bị loại trừ nếu chúng được yêu cầu tắt màn hình, giảm thiểu đến dock hoặc trên một không gian khác. đếm một phần tắc như

Ví dụ “nhìn thấy được.”:

- (void)windowDidChangeOcclusionState:(NSNotification *)notification 
{ 
    if ([[notification object] occlusionState] & NSWindowOcclusionStateVisible) { 
     // visible 
    } else { 
     // occluded 
    } 
} 
+0

Cảm ơn. Tôi đã thấy rằng trong các thay đổi API .. funny mất bao lâu để có được rằng API trong đó :-) –

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