2013-01-06 24 views
8

Tôi có phân cấp hình ảnh đó trông như thế này:hành vi thất thường với lớp hậu thuẫn/lớp lưu trữ NSViews

enter image description here

Vì vậy, về cơ bản tôi có một NSSplitView với một subview có chứa một cái nhìn cuộn (đối với một cái nhìn bảng) cũng như chế độ xem chân trang chứa 3 lượt xem phụ. Một số điều quan trọng cần lưu ý:

  • Sử dụng SDK 10,8 cơ sở, không bố trí tự động
  • Quan điểm nội dung cửa sổ, quan điểm phân chia, quan điểm mẹ của các quan điểm cuộn và footer, và xem di chuyển và xem chân trang là tất cả các lớp được hỗ trợ với một chính sách vẽ lại NSViewContentsRedrawOnSetNeedsDisplay vẽ lại.
  • NSClipView của NSScrollView là lớp con đặc biệt là lớp lưu trữ xem và sử dụng lớp CAScrollLayer làm lớp sao lưu.
  • Chế độ xem màu là chế độ xem được hỗ trợ một lớp đơn giản có bộ màu nền.
  • Các Background Xem là một lớp lưu trữ điểm cho rằng có một lớp con với nội dung bất động sản thiết lập để một hình ảnh (contentsCenter cũng được thiết lập)
  • Các Xem nội dung là một lớp được hỗ trợ chế độ xem vùng chứa chứa một chế độ xem phụ, một lớp tùy chỉnh được hỗ trợ chế độ xem nút (không phải là NSButton).
  • Quan điểm chân chồng lên xem di chuyển khoảng 3 pixel

tôi nhận được hành vi khá thất thường với cách bố trí này. Dưới đây là ba trường hợp riêng biệt mà tôi nhận được, ngẫu nhiên hóa mỗi khi tôi khởi chạy ứng dụng.

1) Mọi thứ xuất hiện OK. xem Bối cảnh và tất cả các nội dung đang có:

enter image description here

2) Nút vẻ tốt, nhưng nền Xem có vẻ là một phần minh bạch:

enter image description here

3) nền Xem xuất hiện đúng nhưng nút đã biến mất:

enter image description here

Hoàn toàn không có mã nào thay đổi giữa mỗi trường hợp này. Tôi chỉ dừng lại và chạy lại ứng dụng. Tôi đảm bảo rằng tôi không thay đổi bất cứ điều gì liên quan đến độ mờ trong thời gian chạy. Điều duy nhất tôi làm khi chạy là thiết lập màu nền và hình ảnh trên các khung nhìn.

EDIT: Tôi có cảm giác rằng các chế độ xem chồng chéo có thể gây ra sự cố, vì vậy tôi đã thử nghiệm mà không có sự chồng chéo và nhận được kết quả tương tự.

CHỈNH SỬA 2: Điều này có vẻ là vấn đề với zPosition của các lớp của lớp được hỗ trợ chế độ xem. Thứ tự được tranh giành và ngẫu nhiên. Nếu tôi tự ép buộc zPosition của các lớp thành giá trị phù hợp để khớp với thứ tự xem phụ, thì mọi thứ đều ổn. Thật không may, tôi không thể tìm thấy một cách sạch hơn để làm điều này hơn là chỉ cần thiết lập các zPosition.

+0

Bạn có đang chạy bản Beta của OS X không? Tôi đã có một số trải nghiệm khá khủng khiếp với các lớp và những thứ được hỗ trợ nhiều lớp theo bản beta 10.8.3. – CodaFi

+0

Không, chạy 10.8.2 – indragie

Trả lời

2

Điều này có vẻ là lỗi hệ điều hành X. A radar has been filed. Trong khi đó, đây là cách giải quyết tốt nhất mà tôi tìm thấy (nơi view là SuperView của tất cả các quan điểm anh chị em ruột):

view.subviews = [view.subviews copy]

Triggering setter cho subviews đặt đúng zPosition trên lớp xem.

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