Post not yet marked as solved
Hi,
I'm using NSSplitViewController and once I load a viewcontroller with scrollview the IBActions of NSSwitch,NSButtons etc not work after I added the scrollview
How can I fix it?
import Foundation
//Categories Protocal delegate
protocol CategoriesViewControllerDelegate: AnyObject {
func didSelectCategory(category: String)
}
class DetailViewController:NSViewController, NSOutlineViewDataSource, CategoriesViewControllerDelegate {
weak var delegate: CategoriesViewControllerDelegate?
override func viewDidLoad() {
// Other setup code...
detViewController = self
loadViewControllerWithScrollView(GeneralSettingsViewController.self, storyboardIdentifier: "GeneralSettingsViewController", originalViewController: self)
}
func didSelectCategory(category: String) {
// Handle the selected category in DetailViewController
print("Selected category: \(category)")
// Load the corresponding view controller or perform any other actions
switch category {
case "General":
// Load GeneralSettingsViewController
// Example: self.replaceCurrentViewController(with: GeneralSettingsViewController())
print("Load GeneralSettingsViewController")
loadViewControllerWithScrollView(GeneralSettingsViewController.self, storyboardIdentifier: "GeneralSettingsViewController", originalViewController: self)
case "DynaMusiX":
// Load DynaMusicSettingsViewController
// Example: self.replaceCurrentViewController(with: DynaMusicSettingsViewController())
print("Load DynaMusicSettingsViewController")
loadViewControllerWithScrollView(DynaMusicSettingsViewController.self, storyboardIdentifier: "DynaMusicSettingsViewController", originalViewController: self)
case "DynaGlance":
// Load DynaGlanceSettingsViewController
// Example: self.replaceCurrentViewController(with: DynaGlanceSettingsViewController())
print("Load DynaGlanceSettingsViewController")
loadViewControllerWithScrollView(DynaGlanceSettingsViewController.self, storyboardIdentifier: "DynaGlanceSettingsViewController", originalViewController: self)
default:
break
}
}
}
//Load viewcontroller with scrollview
func loadViewControllerWithScrollView<T: NSViewController>(_ viewControllerType: T.Type, storyboardIdentifier: String, originalViewController: NSViewController) {
let storyboard = NSStoryboard(name: NSStoryboard.Name("Main"), bundle: nil)
let newViewController = storyboard.instantiateController(withIdentifier: NSStoryboard.SceneIdentifier(storyboardIdentifier)) as! T
// Remove existing child view controllers
for childVC in originalViewController.children {
childVC.removeFromParent()
childVC.view.removeFromSuperview()
}
// Wrap the new view controller's view in a scroll view
let scrollView = NSScrollView()
scrollView.documentView = newViewController.view
scrollView.autoresizingMask = [.width, .height]
scrollView.hasVerticalScroller = true
scrollView.hasHorizontalScroller = false
scrollView.contentView.scroll(to: NSPoint(x: 0, y: newViewController.view.frame.height))
scrollView.translatesAutoresizingMaskIntoConstraints = true
// Set user interaction for the content view inside the scroll view
scrollView.documentView?.translatesAutoresizingMaskIntoConstraints = true
scrollView.documentView?.needsLayout = true
// Add the scroll view as a subview of the original view controller
originalViewController.view.addSubview(scrollView)
scrollView.frame = originalViewController.view.bounds
scrollView.layer?.zPosition = -1
}
t
Post not yet marked as solved
Hi,
How is it possible to make NSProgressIndicator smaller ?
When I use style property the thickness is also change
This is the size that I want (it's from Xcode) it's with regular size style but it's smaller in size
And this is my attempt
Post not yet marked as solved
Hi,
How is it possible to check if I have a new mail? Is it possible to do it with ScriptingBridge?
Thank you!
Post not yet marked as solved
How is it possible to remake the Dynamic Island music spectrum (visual EQ) animation on macOS? I see WhatsApp have a similar animation on voice calls. Is there a 3rd or native Apple library to make it?
https://imgur.com/a/PKDkosC
Post not yet marked as solved
Hi,
What is the best way to make this animation with Swift and UIKit?
[Animation:](https://dribbble.com/shots/4247369-Loading-notch
/)
Thank you!
Post not yet marked as solved
Hi.
Is it possible to get all Safari/Chrome open tabs with AppleScript? Is it also possible to check if tab audio is enable/play video/music?
macOS
Thank you!
Post not yet marked as solved
Hi,
Is it possible to handle touchbar volume slider (not volume buttons)
I want to print hello when the user use volume slider on touchbar
Post not yet marked as solved
Hi,
How can I release my NSWindow manually? when the user tap on red close button?
@objc func windowWillClose() {
// Handle the window closing event here
// You can perform any necessary cleanup or ask the user for confirmation
// Return true to allow the window to close
_window?.contentViewController = nil
_window?.delegate = nil
_window = nil
NotificationCenter.default.removeObserver(self, name: NSWindow.willCloseNotification, object: nil)
}
//Settings cell tap
@objc func settingsItemClicked () {
//_window:NSWindow?
NotificationCenter.default.addObserver(self, selector: #selector(windowWillClose), name: NSWindow.willCloseNotification, object:_window)
if _window?.isVisible == false {
// Load the view controller from the storyboard
let storyboard = NSStoryboard(name: "Main", bundle: nil)
guard let ViewController = storyboard.instantiateController(withIdentifier: "SettingsViewController") as? SettingsViewController else {
fatalError("Unable to instantiate SettingsViewController from storyboard.")
}
// _window.delegate = self
// Set the view controller as the content view controller of the window
_window?.contentViewController = ViewController
_window?.isReleasedWhenClosed = false
_window?.hidesOnDeactivate = true
// Set the window's title
_window?.title = "DynamicLake"
// Show the window
_window?.makeKeyAndOrderFront(self)
}else{
print("The settings view is already open")
}
}
Post not yet marked as solved
Hi,
Is it possible to turn on airplane mode on watchOS using swift? or possible to know the state of airplane mode?
thank you
Post not yet marked as solved
Hi,
Is it possible to change the anchorpoint of NSView if I don't use layer?
If not how can I use layer and still draw my notch?
import Cocoa
import Combine
class NotchView: NSView {
private var mouseDownSubject = PassthroughSubject<NSPoint, Never>()
var mouseDownPublisher: AnyPublisher<NSPoint, Never> {
return mouseDownSubject.eraseToAnyPublisher()
}
//Draw notch
override func draw(_ dirtyRect: NSRect) {
super.draw(dirtyRect)
drawNotch()
}
func drawNotch () {
let size = self.frame.size
let r: CGFloat = 16.0
let gap: CGFloat = 1.0
let notch = NSBezierPath()
notch.move(to: NSPoint(x: 0.0, y: size.height))
notch.curve(to: NSPoint(x: r, y: size.height - r),
controlPoint1: NSPoint(x: r - gap, y: size.height),
controlPoint2: NSPoint(x: r, y: size.height - gap))
notch.line(to: NSPoint(x: r, y: r))
notch.curve(to: NSPoint(x: 2 * r, y: 0.0),
controlPoint1: NSPoint(x: r, y: gap),
controlPoint2: NSPoint(x: r + gap, y: 0.0))
notch.line(to: NSPoint(x: size.width - 2 * r, y: 0.0))
notch.curve(to: NSPoint(x: size.width - r, y: r),
controlPoint1: NSPoint(x: size.width - r - gap, y: 0.0),
controlPoint2: NSPoint(x: size.width - r, y: gap))
notch.line(to: NSPoint(x: size.width - r, y: size.height - r))
notch.curve(to: NSPoint(x: size.width, y: size.height),
controlPoint1: NSPoint(x: size.width - r, y: size.height - gap),
controlPoint2: NSPoint(x: size.width - r + gap, y: size.height))
notch.close()
NSColor.systemPink.setFill() //change to black to see the notch
notch.fill()
}
//Tap with mouse
override func mouseDown(with event: NSEvent) {
super.mouseDown(with: event)
//move notch to top
mouseDownSubject.send(event.locationInWindow)
}
}
Post not yet marked as solved
Hi
I'm trying to resize my NSPanel with spring animation but I have a position problem (the panel is not on center of screen) when I make the panel bigger (see the video)
How can I fix it?
Video:
https://streamable.com/l4281l
func animationBigger () {
let jump = CASpringAnimation(keyPath: "transform.scale")
jump.damping = 60
jump.mass = 10
jump.initialVelocity = 10
jump.stiffness = 200.0
jump.fromValue = 1.0
jump.toValue = 2.0
jump.duration = 0.4
//self is NSPanel
self.contentView?.layer!.add(jump, forKey: nil)
self.setContentSize(bignotchSize)
}
class NotchView: NSView {
private var mouseDownSubject = PassthroughSubject<NSPoint, Never>()
var mouseDownPublisher: AnyPublisher<NSPoint, Never> {
return mouseDownSubject.eraseToAnyPublisher()
}
//Draw notch
override func draw(_ dirtyRect: NSRect) {
super.draw(dirtyRect)
drawNotch()
}
func drawNotch () {
self.layer?.anchorPoint = CGPoint(x: 0.0, y: 0.0)
let size = self.frame.size
let r: CGFloat = 15.0
let gap: CGFloat = 1.0
let notch = NSBezierPath()
notch.move(to: NSPoint(x: 0.0, y: size.height))
notch.curve(to: NSPoint(x: r, y: size.height - r),
controlPoint1: NSPoint(x: r - gap, y: size.height),
controlPoint2: NSPoint(x: r, y: size.height - gap))
notch.line(to: NSPoint(x: r, y: r))
notch.curve(to: NSPoint(x: 2 * r, y: 0.0),
controlPoint1: NSPoint(x: r, y: gap),
controlPoint2: NSPoint(x: r + gap, y: 0.0))
notch.line(to: NSPoint(x: size.width - 2 * r, y: 0.0))
notch.curve(to: NSPoint(x: size.width - r, y: r),
controlPoint1: NSPoint(x: size.width - r - gap, y: 0.0),
controlPoint2: NSPoint(x: size.width - r, y: gap))
notch.line(to: NSPoint(x: size.width - r, y: size.height - r))
notch.curve(to: NSPoint(x: size.width, y: size.height),
controlPoint1: NSPoint(x: size.width - r, y: size.height - gap),
controlPoint2: NSPoint(x: size.width - r + gap, y: size.height))
notch.close()
NSColor.black.setFill() //change to black to see the notch
notch.fill()
}```
```language
class NotchPanel: NSPanel, CAAnimationDelegate {
private (set) var notchView = NotchView()
var notchClickPublisher: AnyPublisher<NSPoint, Never> {
return notchView.mouseDownPublisher
}
init(_ center: NSPoint,_ size: NSSize) {
let notchFrame = NSRect(x: center.x - 0.5 * size.width,
y: center.y - size.height,
width: size.width,
height: size.height)
super.init(contentRect: notchFrame,
styleMask: [ .nonactivatingPanel,.nonactivatingPanel, .hudWindow],
backing: .buffered,
defer: true)
self.level = .popUpMenu
self.collectionBehavior = [.canJoinAllSpaces, .fullScreenAuxiliary]
self.isOpaque = true
self.isMovable = false //Disable notch to be moveable
self.hasShadow = false //we do custom shadow later
self.backgroundColor = NSColor.systemPink //notch background
setNotchView()
}
private func setNotchView() {
self.contentView?.addSubview(notchView)
notchView.translatesAutoresizingMaskIntoConstraints = false
notchView.leftAnchor
.constraint(equalTo: self.contentView!.leftAnchor)
.isActive = true
notchView.topAnchor
.constraint(equalTo: self.contentView!.topAnchor)
.isActive = true
notchView.rightAnchor
.constraint(equalTo: self.contentView!.rightAnchor)
.isActive = true
notchView.bottomAnchor
.constraint(equalTo: self.contentView!.bottomAnchor)
.isActive = true
}```
Post not yet marked as solved
Hi,
I'm trying to resize my rect with CABasicAnimation and the animation go to up and not down
How can I change it?
Video:
https://streamable.com/nw4ekc
Thank you!
let newFrame = NSRect(x: blueRect.frame.origin.x, y: blueRect.frame.origin.y - 100,width: blueRect.frame.size.width, height: 200)
let animation = CABasicAnimation(keyPath: "bounds")
animation.fromValue = NSValue(rect: blueRect.frame)
animation.toValue = NSValue(rect: newFrame)
animation.duration = 0.5 // Animation duration in seconds
blueRect.layer?.add(animation, forKey: "sizeAnimation")
// Update the rect view's size and origin
blueRect.frame = newFrame
Post not yet marked as solved
Hi
How can I detect if user get push notification on macOS?
Thanks!
Post not yet marked as solved
Hi,
I just add airplay to my app and I tried to stream to my TV but not works
AirPlay code:
//Airplay button
let routePickerView = AVRoutePickerView.init(frame: airplayButton.frame)
routePickerView.isRoutePickerButtonBordered = false
self.view.addSubview(routePickerView)let asset = AVAsset(url: URL(string: "https://bitdash-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8")!)
Post not yet marked as solved
Hi,
How can I add vibrancy to image/NSButton for example my play button (macOS)
I found a SwiftUI library for this but I don't use swift UI
https://github.com/lucasbrown/swiftui-visual-effects
My app