獲取NSScreen
實例最有可能是投影儀或AirPlay顯示屏的最佳方式是什麼? (甚至電視輸出?)我正在編寫演示文稿軟件,並需要知道哪個屏幕最有可能代表「演示文稿」屏幕。NSScreen獲取投影機/電視輸出/ AirPlay屏幕?
一些選項來考慮:
A.使用第二種情況,如果有任何。當然,如果連接兩個以上的屏幕,這顯然不會帶來好的結果。
NSScreen* projectorScreen = [NSScreen mainScreen];
NSArray* screens = [NSScreen screens];
if(screens.count > 1) {
projectorScreen = screens[1];
}
B.如果第一個屏幕不是主屏幕,請使用第一個屏幕。其背後的原因是,在鏡像的情況下,第一個屏幕應該是具有最高像素深度的屏幕。
NSScreen* projectorScreen = [NSScreen mainScreen];
NSArray* screens = [NSScreen screens];
if(screens.count > 1) {
if(screens[0] != projectorScreen) {
projectorScreen = screens[0];
}
}
C.使用最低的屏幕,而不是的主屏幕。原因只是選擇任何的屏幕即而不是的主屏幕。
NSScreen* projectorScreen = [NSScreen mainScreen];
NSArray* screens = [NSScreen screens];
if(screens.count > 1) {
for(NSScreen* screen in screens) {
if(screen != projectorScreen) {
projectorScreen = screen;
break;
}
}
}
D.使用NSScreen
的deviceDescription
字典,找到的最大的屏幕在真實世界座標。這是NSDeviceSize
的寬度和高度NSDeviceResolution
和理論上這應該產生一個平方英寸面積。不過,我並不完全相信操作系統知道每個屏幕的實際大小。
其他建議?
授予沒有任何100%正確的啓發式,但是再次,大多數時間選擇正確的屏幕應該是足夠的。
E.彈出菜單。 –
彈出菜單可以指示投影屏幕? – adib
詳細說明:你的第五個選擇是有一個彈出式菜單,在其中列出所有的屏幕,並讓用戶選擇他們想要呈現的任何屏幕。 (沒有發佈爲答案,因爲您的問題對於選擇默認設置仍然有效。) –