Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Custom macOS Popover 💬

License

NotificationsYou must be signed in to change notification settings

iSapozhnik/Popover

Repository files navigation

SwiftmacOSLicense: MIT

Custom macOS popover.

alt text

Install

Since this is a Swift Package, the installation process is pretty stright forward.

Manual way

Update yourPackage.swift dependencies:

dependencies: [    .package(url: "https://github.com/iSapozhnik/Popover", from: "1.1.1")]

Via Xcode:

  1. Go toFile -> Swift Packages -> Add Package Dependency.
  2. Put GitHub URLhttps://github.com/iSapozhnik/Popover and clickNext
  3. Select the latest version
  4. ClickFinish

How to use

  1. In yourAppDelegate import Popover
  2. Create a view you want to put into a status bar.
  3. Create a content view controller which would be embedded inside Popover
  4. Optionally create menu items
  5. Create a Popover instance. Here you can use either standard configuration (you don't need to passwindowConfiguration parameter in this case) or you can subclassDefaultConfiguration, override some properties and pass a new instance as a parameter. If in step 4 you have created menu items, pass it here as well. You can see them by making right click on menu bar item.
  6. Callprepare to set everything up.

And here is how typicalAppDelegate may look like:

import Cocoaimport PopoverclassMyPopoverConfiguration:DefaultConfiguration{overridevarbackgroundColor:NSColor{returnNSColor.systemRed}overridevarborderColor:NSColor?{returnNSColor.red}}@NSApplicationMainclassAppDelegate:NSObject,NSApplicationDelegate{varpopover:Popover!func applicationDidFinishLaunching(_ aNotification:Notification){letstatusItemView=StatusItemView(frame:NSRect(width:22.0, height:20))letviewController=MainViewController()letmenuItems:[Popover.MenuItemType]=[.item(Popover.MenuItem(title:"Settings", action: viewController.showSettings)),.separator,.item(Popover.MenuItem(title:"Quit", key:"q", action: viewController.quit))]        popover=Popover(with:MyPopoverConfiguration(), menuItems: menuItems)        popover.prepare(with: statusItemView, contentViewController: viewController)}}

What can be customized?

Quite a lot of things:

publicprotocolPopoverConfiguration{    /// The distance from Popover's arrow to a status item.varpopoverToStatusItemMargin:CGFloat{get}    /// Popover's background color.varbackgroundColor:NSColor{get}    /// Popover's border color.    /// - Important:    ///     If `borderColor` returns `nil`, settings `borderWidth` won't make any effect. See also: `borderWidth`.varborderColor:NSColor?{get}    /// Popover's border width.    /// - Important:    ///      If Popover's border color is set to `nil`, setting `borderWidth` won't make any effect.varborderWidth:CGFloat{get}    /// Defines Popover arrow height.vararrowHeight:CGFloat{get}    /// Defines Popover arrow width.vararrowWidth:CGFloat{get}    /// Defines Popover corner radius.    /// - Warning:    ///     If this value is too big and if the Popover's status item (menu bar view) is too close to the right edge, the appearence of the Popover might be odd.varcornerRadius:CGFloat{get}    /// Defines Popover content edge insets.varcontentEdgeInsets:NSEdgeInsets{get}    /// The distance from the right side of the Popover to the screen's edge.    /// - Warning:    ///     If this value is too big and if the Popover's status item (menu bar view) is too close to the right edge, the appearence of the Popover might be odd.varrightEdgeMargin:CGFloat{get}}

Mentions

Credits

Created and maintained by@iSapozhnik.

License

Released under the MIT License. SeeLICENSE for details.

Copyright © 2020-present Sapozhnik Ivan.

Heavily inspired byCCNStatusItem


[8]ページ先頭

©2009-2025 Movatter.jp