2011-11-12 64 views
6

Đây có phải là cơ hội để thay đổi màu nền của NSCollectionView theo chương trình không?Thay đổi màu nền của một NSCollectionView

Tôi đã cố gắng subclassing .. nhưng không làm việc ..

@interface CollectionViewBg : NSCollectionView 

trong .m

[self setBackgroundColors:[NSArray arrayWithObjects:[NSColor blueColor], nil]]; 
+2

Làm việc cho tôi (dự án thử nghiệm sạch với NSCollectionView chưa được định cấu hình). Đảm bảo rằng chế độ xem nguyên mẫu của chế độ xem bộ sưu tập của bạn không được điền đầy đủ. Ngoài ra hãy chắc chắn rằng bạn thực sự đặt "CollectionViewBg" làm lớp của chế độ xem trong IB. – Regexident

+1

Ngoài ra, bạn có thể sử dụng 'arrayWithObject:' để tạo mảng một phần tử. –

+0

Bạn đang gửi phương thức 'setBackgroundColors:' từ phương thức nào? –

Trả lời

3

Trong .m, loại bỏ dòng này:

[self setBackgroundColors:[NSArray arrayWithObjects:[NSColor blueColor], nil]]; 

Và sử dụng này mã:

- (void)drawRect:(NSRect)dirtyRect{ 

[[NSColor blueColor] setFill]; 
NSRectFill(dirtyRect); 

} 

Cũng đừng quên thay đổi lớp đối tượng NSCollectionView trong IB thành CollectionViewBg.

Hope this helps :)

+0

Tôi cho rằng bạn không muốn bất kỳ vật phẩm nào được thu thập sẽ được rút ra? Và có lý do nào khiến bạn đề nghị tránh thuộc tính 'backgroundColors' của NSCollectionView không? –

+0

Rất tiếc .. đã xảy ra sự cố với Bộ sưu tập đã chỉnh sửa của tôi .. Tôi đã tạo một dự án mới và có .. nó hoạt động như một nét duyên dáng .. Vì vậy, cảm ơn mọi người đã trợ giúp !!! Tôi sẽ đi kiểm tra những gì tôi đã làm xấu trong mã của tôi :) –

+0

Nó không có tác dụng tôi mong đợi. @Peter Hosey NSRectFill() hoạt động ở đây. Nó * có vẻ * để vẽ nơi backgroundColors không. Cả hai cách tiếp cận đều không mang lại một nền trong suốt rõ ràng cho khung nhìn bên dưới. – uchuugaka

0

Guess subclassing không phải là một ý tưởng tuyệt vời, bởi vì hầu hết các điều khiển Cocoa cung cấp kỹ thuật khác nhau để tránh subclassing để tùy chỉnh sự xuất hiện và hành vi.

Trong trường hợp cụ thể này, bạn có thể đặt thuộc tính backgroundView cho số NSCollectionView và cung cấp chế độ xem tùy chỉnh dành riêng cho việc vẽ nền tùy chỉnh.

Nếu bạn chỉ cần thay đổi màu nền, bạn có thể xem xét tận dụng lợi thế của thực tế là chế độ xem bộ sưu tập thường chống lại bên trong chế độ xem cuộn. Chỉ cần đặt backgroundColordrawsBackground thuộc tính của NSScrollView.

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