Mac 용 메뉴 막대 응용 프로그램을 만드는 방법


175

편집 : 이것은 좋은 기성품 메뉴 바 응용 프로그램입니다 여기에 ( github에 소스 이로) 대답 .


메뉴 막대 응용 프로그램을 만드는 방법이 궁금합니다. 그렇게하려면 어떤 요구 사항이 있습니까?

메뉴 막대에 대한 간단한 응용 프로그램이 브라우저를 사용하여 링크를 여는 것이 었습니다. 비슷한 것을 만들고 싶습니다.

여기에 이미지 설명을 입력하십시오

이것은 내가 비슷하게 만들고 싶은 응용 프로그램입니다.


4
다음은 간단한 튜토리얼 입니다.
NSRover

답변:


133

NSStatusItem 은 당신이 찾고있는 것입니다. 또한 문자열 값이 1 인 LSUIElement를 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

안녕하세요 여러분의 도움 송어, 덕분에 스팀 ...하지만 어떻게 우리가 응용 프로그램 ... 어떤 도움 .... 제거 사용자까지, 메뉴 바에서 항상 우리의 응용 프로그램 바로 가기를 유지할 수 stackoverflow.com/questions/23605687/...
VSN

66

Codebox의 Popup 이 훌륭한 출발점이라는 것을 알았습니다 . Github 에서 분기가 완료되었습니다.

여기에 이미지 설명을 입력하십시오

잘 작동하지만 사이트에서 메모합니다 ...

PS Lion에서 Apple은 iOS와 같은 팝 오버를위한 새로운 클래스를 추가하고 있습니다. 따라서 OS X 10.7이 릴리스 된 후에는 가능한 경우 기본 Cocoa 클래스에 의존하는 것이 좋습니다. 다른 경우에도 팝업 프로젝트를 계속 사용할 수 있어야합니다.


3
어쨌든 이것은 사실이 아닙니다. NSPopover에는 심각한 제한이 있습니다. 텍스트 필드 / 뷰는 첫 번째 응답자가 될 수 없으므로 텍스트를 입력 할 수 없습니다.
Christian Kienle 2013

@ChristianKienle 그래서 OS X 버전이 10.7보다 큰 팝업 응용 프로그램으로 시작하는 것이 좋습니다?
fatuhoku

예. NSPopover + Status 아이템은 10.7과 10.8에서 심각한 제한이 있습니다. 예를 들어 위의 스크린 샷은 검색 필드를 보여줍니다. NSPopover를 사용하면 검색 필드와 올바르게 상호 작용할 수 없습니다.
Christian Kienle

1
Codebox의 Popup 샘플에 왜 그렇게 복잡한 BackgroundPanel이 있습니까?
rbp

13

BitBarGitHub의 "Mac OS X 메뉴 막대에 아무 것도 넣을 수있는" 응용 프로그램입니다 .

쉘 또는 기타 실행 스크립트 ( 플러그인 을 호출 함 -플러그인 저장소의 많은 예제 참조 )를 실행하고 결과를 메뉴 표시 줄에 표시합니다. 자신의 플러그인을 작성하고 'Plugins folder'에 추가하여 간단하게 실행할 수 있습니다. 정보를 표시 할뿐만 아니라 정의한 플러그인 메뉴에서 사전 정의 된 bash 스크립트를 대화식으로 실행할 수도 있습니다.

내가이 답변을 처음 게시 한 이후로 인기가 폭발 했으며 (현재 52 명의 기여자) 현재 플러그인을 패키지화 할 수있는 배포 가능한 버전도 있습니다.

라이브 비트 코인 가격을 보여주는 매우 간단한 (비 대화식) 예 :

여기에 이미지 설명을 입력하십시오


4
다소 가난한 독창적 인 답변을 개선 한 cwd 덕분에
MatzFan

10

Apple 이 Yosemite 에 NSStatusBarButton속성을 추가함에 따라 NSStatusItem메뉴 바 앱을 훨씬 간단하게 구현할 수 있습니다. 방금 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, Mac에서 기본 valume 컨트롤과 같은 메뉴 표시 줄 에이 바로 가기를 항상 유지하고 싶습니다. 프로그래밍으로 가능합니다 ... 제발 도와주세요!
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.