วิธีสร้างแอปพลิเคชัน Menubar สำหรับ Mac


175

แก้ไข: นี่เป็นแอปพลิเคชัน menubar สำเร็จรูปที่ดีที่นี่ ( แหล่ง github ) โดยคำตอบนี้


ฉันสงสัยว่าจะทำแอปพลิเคชั่นแถบเมนูมีข้อกำหนดอะไรบ้าง?

ฉันเห็นแอปพลิเคชันที่เรียบง่ายสำหรับแถบเมนูคือการเปิดลิงก์โดยใช้เบราว์เซอร์ของคุณฉันต้องการสร้างสิ่งที่คล้ายกับที่

ป้อนคำอธิบายรูปภาพที่นี่

นี่เป็นแอปพลิเคชั่นที่ฉันชอบทำคล้ายกัน


4
นี่คือการที่ง่ายกวดวิชา
NSRover

คำตอบ:


133

NSStatusItemคือสิ่งที่คุณกำลังมองหา เพิ่ม LSUIElement ด้วยค่าสตริงที่ 1 ใน Info.plist ของคุณเพื่อซ่อนจาก Dock


14
mactech.com/articles/mactech/Vol.22/22.02/Menulet - นี่คือตัวอย่างโค้ดพร้อมคำอธิบาย
SteamTrout

2
คุณสามารถตรวจสอบหนึ่งในโครงการ GitHug ของฉันสำหรับตัวอย่าง: github.com/nippysaurus/WeatherRock/blob/master/…
Nippysaurus

3
ฉันใช้ตัวอย่างที่อธิบายไว้ในลิงก์ของ SteamTrout และวางไว้บน GitHub อยู่ที่นี่: github.com/wanderingstan/IPMenuletExample
Stan James

สวัสดี Steam Trout ขอบคุณสำหรับความช่วยเหลือของคุณ ... แต่เราจะเก็บทางลัดแอปพลิเคชันของเราไว้ในแถบเมนูได้อย่างไรจนกว่าผู้ใช้จะถอนการติดตั้งแอปพลิเคชัน ... ความช่วยเหลือใด ๆ .... stackoverflow.com/questions/23605687/
VSN

66

ฉันพบป๊อปอัปของ Codeboxว่าเป็นจุดเริ่มต้นที่ดี มันสุกสำหรับการฟอร์กที่ Github

ป้อนคำอธิบายรูปภาพที่นี่

แม้ว่ามันจะใช้งานได้ดี แต่พวกเขาทราบบนเว็บไซต์ของพวกเขา ...

PS In Lion Apple กำลังเพิ่มคลาสใหม่สำหรับป๊อปอัปเช่นเดียวกับใน iOS ดังนั้นหลังจากที่เปิดตัว OS X 10.7 คุณควรที่จะไว้วางใจคลาส Cocoa ดั้งเดิมที่เป็นไปได้ ในกรณีอื่นโครงการป๊อปอัปยังควรใช้งานได้


3
นี่ไม่เป็นความจริงในทุกกรณี NSPopover มีข้อ จำกัด ที่ร้ายแรง: ช่องข้อความ / มุมมองไม่สามารถตอบกลับเป็นคนแรกและทำให้คุณไม่สามารถป้อนข้อความ
Christian Kienle

@ChristianKienle คุณจะยังคงแนะนำให้เริ่มต้นด้วยแอปพลิเคชันป๊อปอัพที่มีรุ่น OS X> 10.7 หรือไม่
fatuhoku

ใช่. รายการ NSPopover + สถานะมีข้อ จำกัด ร้ายแรงใน 10.7 และ 10.8 ตัวอย่างเช่นภาพหน้าจอด้านบนแสดงช่องค้นหา ด้วยการใช้ NSPopover คุณจะไม่สามารถโต้ตอบกับช่องค้นหาได้อย่างถูกต้อง
Christian Kienle

1
ทำไมตัวอย่าง Popup ของ Codebox จึงมี BackgroundPanel ที่ซับซ้อน
rbp

13

BitBarเป็นแอปพลิเคชั่นบนGitHubที่สามารถ "ใส่อะไรในแถบเมนู Mac OS X"

มันรันเชลล์หรือสคริปต์ที่รันได้อื่น ๆ (ซึ่งเรียกใช้ปลั๊กอิน - ดูตัวอย่างมากมายใน repo ปลั๊กอิน ) และแสดงผลลัพธ์ในแถบเมนู คุณสามารถเขียนปลั๊กอินของคุณเองและเปิดใช้งานได้ง่ายๆโดยเพิ่มลงในโฟลเดอร์ 'ปลั๊กอิน' เช่นเดียวกับการแสดงข้อมูลมันยังสามารถเรียกใช้สคริปต์ทุบตีที่กำหนดไว้ล่วงหน้าแบบโต้ตอบจากเมนูปลั๊กอินที่คุณกำหนด

ตั้งแต่ที่ฉันโพสต์คำตอบนี้เป็นครั้งแรกมันได้รับความนิยมมากขึ้น (ปัจจุบันมีผู้สนับสนุน 52 คน) และตอนนี้ยังมีรุ่นที่สามารถแจกจ่ายได้ซึ่งคุณสามารถจัดเก็บปลั๊กอินของคุณเองได้

ตัวอย่างง่ายๆ (ไม่โต้ตอบ) เพื่อแสดงราคา Bitcoin สด:

ป้อนคำอธิบายรูปภาพที่นี่


4
ขอบคุณcwdสำหรับการปรับปรุงคำตอบดั้งเดิมที่ค่อนข้างแย่ของฉัน
MatzFan

10

เนื่องจาก Apple ได้เพิ่มNSStatusBarButtonคุณสมบัติให้กับNSStatusItemYosemite เราสามารถใช้แอป menubar ได้ง่ายกว่ามาก ฉันเพิ่งสร้างโครงการตัวอย่างบน GitHub

https://github.com/taichino/PopupTest


ขอบคุณสำหรับการรวมกัน!
cwd

2

FlyCutเป็นอีกหนึ่งแอปพลิเคชั่นโอเพนซอร์สที่น่าใช้ (ใบอนุญาต MIT) มีประโยชน์มากเหมือนกันฉันใช้วันละหลายครั้ง

นี่คือรหัสที่ดูเหมือนว่าอาจเกี่ยวข้อง:

    // Flycut/AppController.h
    IBOutlet NSMenu *jcMenu;

    // Flycut/AppController.m
    statusItem = [[[NSStatusBar systemStatusBar]
            statusItemWithLength:NSVariableStatusItemLength] retain];
    [statusItem setHighlightMode:YES];

    if ( [[DBUserDefaults standardUserDefaults] integerForKey:@"menuIcon"] == 1 ) {
        [statusItem setTitle:[NSString stringWithFormat:@"%C",0x2704]]; 
    } else if ( [[DBUserDefaults standardUserDefaults] integerForKey:@"menuIcon"] == 2 ) {
        [statusItem setTitle:[NSString stringWithFormat:@"%C",0x2702]]; 
    } else {
        [statusItem setImage:[NSImage imageNamed:@"com.generalarcade.flycut.16.png"]];
    }
    [statusItem setMenu:jcMenu];
    [statusItem setEnabled:YES];

สวัสดี funroll ฉันต้องการให้ทางลัดนี้เสมอในแถบเมนูเช่นการควบคุม valume เริ่มต้นใน mac เป็นไปได้ด้วยการเขียนโปรแกรม ... โปรดช่วยฉัน !!!
VSN

@VSN ความคิดเห็น StackOverflow ไม่ใช่สถานที่ที่ดีที่จะขอความช่วยเหลือเช่นนี้ ฉันขอแนะนำให้อ่านวิธีการถามคำถามที่ดี
funroll

ฉันได้ถามคำถามใหม่ - ความช่วยเหลือใด ๆ ที่นั่น .... stackoverflow.com/questions/23605687/
VSN

0

Mail Notifrเป็นอีกหนึ่งแอพMenubarแบบโอเพนซอร์ส มันช่วยให้ฉันเป็นกลุ่มโดยเฉพาะอย่างยิ่งเมื่อฉันต้องการทราบวิธีการเปิดใช้ในการเข้าสู่ระบบ นอกจากนี้ยังมีอยู่บนApp Store

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.