2011-02-07 62 views
19

Tôi đã cố gắng làm cho ứng dụng Mac của tôi nhập toàn màn hình ngay bây giờ trong một thời gian nhưng không thể làm cho nó hoạt động. Theo trung tâm phát triển của Apple, tôi nên sử dụng enterFullScreenMode:withOptions: mang lại cho tôi, phương thức enterFullScreenMode không tìm thấy.Làm thế nào để tạo một ứng dụng Mac OSX Cocoa toàn màn hình?

Ở mọi nơi tôi google có vẻ như mọi người gặp vấn đề với việc tạo chế độ toàn màn hình cho ứng dụng của họ, vậy cách làm cho ứng dụng hoạt động như thế nào?

Edit:

Tất nhiên enterFullScreenMode là cho NSView và tôi sử dụng nó trên một NSWindow; nó không phải là quan điểm tôi muốn có toàn màn hình, nhưng là cửa sổ. Tuy nhiên, tôi không thể tìm thấy bất kỳ chức năng nào cho số NSWindow.

+0

làm cho nội dungXem NSWindow nhập toàn màn hình. – hauntsaninja

+0

Tôi đã đọc xung quanh (http://www.cocoabuilder.com/archive/cocoa/201569-nsview-enterfullscreenmode-withoptions-woes-window-levels.html) và có vẻ như 'enterFullScreenMode: withOptions:' là gần như vô dụng, nếu bạn muốn làm bất cứ điều gì hữu ích. Tôi nghĩ rằng bạn sẽ phải sử dụng một số Carbon-nastiness, nếu bạn muốn kiểm soát hoạt ảnh chuyển tiếp, mức cửa sổ, menubar/dock unhiding, vv –

+4

chỉ cần sử dụng '[[window contentview] enterFullScreenMode: [NSScreen mainScreen] withOptions : nil]; 'và bạn có thể làm * mọi thứ * bạn có thể làm với NSView bình thường, bao gồm thêm lớp CoreAnimation và lớp/lượt xem OpenGL. – hauntsaninja

Trả lời

6

Như đã đề cập trong the link Jonathan provided in the comments, enterFullScreen:withOptions: có một số hạn chế có thể khiến bạn muốn xé tóc ra. Cách tốt nhất để làm toàn màn hình vẫn là CGDirectDisplay API cũ hơn. Cocoa Dev Central có article on fullscreen apps bao gồm tất cả mọi thứ bạn cần biết.

Bạn sẽ nhận thấy bài viết khá cổ và các công cụ dev đã thay đổi rất nhiều kể từ đó (Project Builder! Ah, những ngày cũ tốt), nhưng bản thân mã sẽ vẫn hoạt động.

20

Lion có một số API mới cho toàn màn hình.

Để làm điều đó với NSWindow, làm được điều này

[window setCollectionBehavior: 
      NSWindowCollectionBehaviorFullScreenPrimary]; 

Để làm điều này với NSApplication làm nhiều hơn nữa này

[[NSApplication sharedApplication] 
     setPresentationOptions:NSFullScreenWindowMask]; 

Một chút thông tin về nó here.

12

Ngày hiện tại Nhà phát triển Mac Os X (người dùng bảng phân cảnh) chỉ cần bấm vào main.storyboard của họ, chọn NSWindow (không phải NSWindowController), Sử dụng bảng bên phải để tìm bảng thuộc tính (bảng bên trái của người cai trị, nó trông giống như một điều kéo thanh) tìm "Full Screen" và chọn "Primary Window" thay vì giá trị mặc định của nó là "Unsupported". Bạn cũng có thể thiết lập các cửa sổ phụ trợ nếu đó là những gì bạn muốn.

Không chống lại thay đổi, sử dụng bảng phân cảnh. Một trong số chúng tôi ... một trong số chúng tôi ...

+0

Bạn cũng có thể làm điều này với các XIB cũ (NIB) đơn giản. Bạn không cần bảng phân cảnh. Làm thế nào để bạn xử lý các ứng dụng dựa trên tài liệu trong bảng phân cảnh?Tôi tìm thấy các mặc định thực sự gây phiền nhiễu, cách tài liệu được tách ra thành một cảnh riêng biệt - nó bổ sung thêm công việc vì vậy tôi đã phải nối dây tài liệu với bộ điều khiển xem của tôi bằng mã, vì vậy bảng phân cảnh cảm thấy không đầy đủ. Đối với ứng dụng iOS, tôi vẫn thực hiện hầu hết các lượt xem trong mã vì tôi không phải là người hâm mộ các phân đoạn và tôi hiệu quả hơn về mã. Đối với các ứng dụng Mac, tôi có xu hướng sử dụng NIB nhưng tôi vẫn cần phải viết một số mã xem. – Joel

+0

@Ethan, không thể nhìn thấy giá trị không được hỗ trợ, hiện tại chế độ toàn màn hình là bắt buộc phải không? –

0
[self.view setFrame:[[NSScreen mainScreen] visibleFrame]]; 
Các vấn đề liên quan