2012-02-25 29 views
10

Tôi gặp sự cố khi Lion giới thiệu cuộn đàn hồi (hình bên dưới). Khi bạn cuộn chế độ xem bảng của mình (dựa trên ô, với các màu hàng xen kẽ) ngoài giới hạn của nó, nền không vẽ. Tôi đã thử làm bản vẽ của riêng tôi trong -[drawBackgroundInClipRect:], nhưng có vẻ như bạn không thể vượt quá giới hạn của chế độ xem bảng. Làm thế nào tôi có thể mở rộng nền thành lãnh thổ cuộn đàn hồi?Vẽ hình nền của NSTableView bên ngoài giới hạn của nó

Scrolling left of table

+0

Đó là NSScrollView chứa đang vẽ bản vẽ trong khu vực này. Có lẽ bạn có thể tạo mẫu cho các hàng xen kẽ và đặt màu đó làm màu nền trong chế độ xem cuộn? – Aderstedt

+1

Đây có phải là sự cố không? Tôi không thể tạo lại hiệu ứng này trong OS X 10.9. – jemmons

+0

@jemmons Không chắc tôi sẽ cập nhật khi tôi đang ở Mavericks. – Dov

Trả lời

0

Trong trả lời câu hỏi của bạn

Một cái nhìn vẽ bên ngoài giới hạn của nó thường là một không-không. Khi sử dụng các màu nền thay thế, NSTableView sẽ vẽ trực tiếp nền của nó. Nhưng trong chế độ xem bảng dựa trên chế độ xem, NSTableRowView được sử dụng và nếu nó có màu nền riêng, điều này thậm chí còn đặt ra nhiều thách thức hơn.

Các Bad News

Các tập hợp của NSScrollView (và các bộ phận khác nhau của nó), NSTableView, và NSTableHeaderView rất phức tạp ngày của riêng mình. Khi bạn ném chức năng dựa trên chế độ xem vào danh sách kết hợp (mỗi hàng có chế độ xem và mỗi ô có chế độ xem riêng và mỗi ô được sử dụng lại, hoạt ảnh xung quanh, v.v.), ghi đè hành vi này "không có cách nào để trải qua cuộc sống, con trai ! " ;-)

The Good Tin tức

Vấn đề xen kẽ màu nền không mở rộng theo xem bảng cuộn đàn hồi căng đã được giải quyết (ít nhất là trên 10.10, rằng tôi có thể nói), vì vậy đây không còn là vấn đề trừ khi bạn có chế độ xem hàng/ô với nền tùy chỉnh hoặc chỉ màu nền.

Một giải pháp chung cho tài liệu Custom (cuộn) Xem

Đối với tất cả quan điểm cuộn khác với nền cai trị bạn muốn kéo dài di chuyển đàn hồi, bạn sẽ cần một tùy chỉnh NSScrollView lớp con mà hy vọng một cái nhìn tài liệu (chế độ xem cuộn tùy chỉnh của bạn) để phù hợp với giao thức mà bạn xác định (như -(NSImage *)backgroundImageForClipViewBounds:). Chế độ xem cuộn sẽ quan sát chế độ xem nội dung của nó (NSClipView) cho các số giới hạn thay đổi thông báo và tự gắn cờ để hiển thị. Khi chế độ xem -drawRect: của chế độ xem cuộn, sau đó nó sẽ yêu cầu chế độ xem cuộn cho số -backgroundImageForClipViewBounds: (thông qua giao thức của bạn) và vẽ nó vào chính nó, do đó làm cho "nền vô hạn" của chế độ xem được cuộn của chính nó.

Tôi chưa thử nghiệm lý thuyết này nhưng tôi tin rằng nó sẽ hoạt động. Tôi hi vọng cái này giúp được.

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