2011-12-22 15 views
5

Tôi đang tìm cách vẽ hiệu ứng mờ dần trên chế độ xem bảng (và chế độ xem phác thảo, nhưng tôi nghĩ nó sẽ giống nhau) khi nội dung được cuộn. Dưới đây là một ví dụ từ các ứng dụng Fantastical:Hiệu ứng phai màu ở trên và dưới của NSTableView/NSOutlineView

fade effect on top

Ngoài ra một đoạn video của một phai tương tự trên QuickLook cửa sổ here.


Để làm điều này tôi đã cố gắng subclassing scrollview của một tableview với mã này:

#define kFadeEffectHeight 15 

@implementation FadingScrollView 

- (void)drawRect: (NSRect)dirtyRect 
{ 
    [super drawRect: dirtyRect]; 

    NSGradient* g = [[NSGradient alloc] initWithStartingColor: [NSColor blackColor] endingColor: [NSColor clearColor]]; 

    NSRect topRect = self.bounds; 
    topRect.origin.y = self.bounds.size.height - kFadeEffectHeight; 
    topRect.size.height = kFadeEffectHeight; 

    NSRect botRect = self.bounds; 
    botRect.size.height = kFadeEffectHeight; 

    [NSGraphicsContext saveGraphicsState]; 
    [[NSGraphicsContext currentContext] setCompositingOperation: NSCompositeDestinationAtop]; 
    // Tried every compositing operation and none worked. Please specify wich one I should use if you do it this way 

    [g drawInRect: topRect angle: 90]; 
    [g drawInRect: botRect angle: 270]; 

    [NSGraphicsContext restoreGraphicsState]; 
} 

... nhưng điều này không phai bất cứ điều gì, có lẽ vì điều này được gọi trước khi xem bảng thực tế được vẽ. Tôi không có ý tưởng về làm thế nào để làm điều này :(

Bằng cách này, cả hai tableview và outlineview Tôi muốn có hiệu ứng này được xem dựa trên, và các ứng dụng là 10,7 chỉ.

+0

bạn có thể cung cấp video về hiệu ứng hoặc liên kết iTunes của ứng dụng bạn đang truyền cảm hứng không? – viggio24

+0

@ viggio24 đã thêm liên kết tới Fantastical trên cửa hàng ứng dụng và video của một ví dụ khác – Alex

Trả lời

7

Trong Mac OS X (như câu hỏi của bạn được gắn thẻ), có một số gotchas mà làm cho điều này khó khăn.Điều này đặc biệt đúng trên Lion với cuộn đàn hồi

Tôi đã chỉ cần cùng nhau những gì tôi nghĩ là một cách tiếp cận tốt hơn so với làm việc trên trực tiếp bảng hoặc phác thảo: một lớp con NSScrollView tùy chỉnh, giữ hai khung nhìn "mờ dần" được đặt ở vị trí chính xác trên đỉnh xem clip của nó JLNFadingScrollView có thể được cấu hình với chiều cao và màu sắc mờ mong muốn và là nguồn mở/miễn phí trên Github. Hãy tôn trọng giấy phép và tận hưởng. :-)

Examples of JLNFadingScrollView

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