(macOS, Swift, storyboards)Can I change a label on hover?WHAT I HAVE TRIED1- I have put a button in storyboard and make it transparent. It works if I click, but I could nof find how to if hover@IBOutlet weak var label1: NSTextField!@IBAction func button1(_ sender: NSButton) { label1.textColor = NSColor.gray}2- I have put a NSView and drag a NSClickGestureRecognizer to it. Again, it works on click but I cannot find a way to do it with hover@IBOutlet weak var label2: NSTextField!@IBAction func gestureRecognizer1(_ sender: NSClickGestureRecognizer) { label2.textColor = NSColor.gray}I could find something in Apple documentation. But it talks about UIButton. I cannot find a way to adapt to my case:https://developer.apple.com/documentation/uikit/uihovergesturerecognizer
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
macOS, SwiftIs it possible to remove the scroll in WebKit View? (or make it not visible)I have a WebKit View from library and I have made the connection to the ViewController.swift:@IBOutlet weak var webView1: WKWebView!
macOS, Swift, storyboards
How can I make the window active in all spaces?
I could find how to do that with storyboard: Select the window > Attributes > Spaces > Can join all spaces. How can I do the same with code (activate and de-activate)
How to make a link when I click to a button in macOS?
This works well in iOS. How to do the same with macOS:
@IBAction func button1(_ sender: UIButton) {
if let url = URL(string: "some link") {
UIApplication.shared.open(url)
}
}
I change the text of a label dynamically (so I do not know the text of the label) how can I animate the size to fit. I am looking for a smooth, elegant transition for design purposes.
What I have tried:
NSAnimationContext.runAnimationGroup({ (context) in
context.duration = 4.0
label1.stringValue = "long, long text"
label1.animator().sizeToFit()
})
(swift, macOS, storyboards)
I open a window with code. Every time the user clicks the button the same window opens again and again. How to avoid that?
This opens well the window, but multiple times:
@IBAction func obrirAmbCodi(_ sender: NSButton) {
let storyboard:NSStoryboard = NSStoryboard(name: "Main", bundle: nil)
guard let controller:NSWindowController = storyboard.instantiateController(withIdentifier: "finestra3") as? NSWindowController else { return }
controller.showWindow(self)
}
If I open the window with a segue (storyboard control drag) I can accomplish that by selecting the window controller > Attributes > Presentation > Single. But it seems that it does not work if I open the window with code
(swift, storyboards, macOS)
Can I stop or pause an animation?
(I could find how to remove it:
view1.layer?.removeAllAnimations()
Here is the official documentation but I do not understand:
https://developer.apple.com/documentation/uikit/uiviewanimating/1649843-pauseanimation)
@IBAction func fadeOut(_ sender: NSButton) {
NSAnimationContext.runAnimationGroup({ (context) in
context.duration = 5.0
view1.animator().alphaValue = 0
})
}
(swift, macOS, storyboards)
I can animate a window just adding animate: true to a regular way to control a window. Is there any way to control the animation, especially the time the animation will take?
self.view.window?.setFrame(NSRect(x:0, y:0,
width:300, height:300),
display: true, animate: true)
(Swift, macOS, storyboards)
I can find the total height of the screen:
let totalHight = NSScreen.main?.frame.height
To know the real space I have to subtract 23 px for the Menu Bar.
let usableHight = totalHight - 23
But on some occasions the user may not have the Menu Bar active (System Preferences > General > uncheck Automatically hide and show the menu bar)
Is there a way to know if the Menu Bar is hidden or show? or perhaps there is another way to know the real usable height of the screen?
(Swift, macOS, Storyboards)
I can read a JSON from an URL. I would like to know when I can access the information. To be able to go from one function after the other. It seems that "completion" does not work with JSON? or perhaps I am doing something wrong?
I give a simplified example: I try to get the JSON information in func first() and then do something with that information in func second()
var result2 = "empty"
func first(completion: ()->()) {
let url = URL(string: "https://jsonplaceholder.typicode.com/users")!
URLSession.shared.dataTask(with: url) { data, _, _ in
if let data = data {
let result = try? JSONDecoder().decode([User].self, from: data)
self.result2 = result![0].name
}
}.resume()
completion()
}
func second() {
//do something after first()
print (result2)
}
@IBAction func button1(_ sender: NSButton) {
first {
second()
}
}
(Swift, macOS, storyboards)
//I have a JSON in a URL. Simplified it is something like this:
{
"id": 1,
"name": "Leanne Graham",
"with-hyphen": 123
}
//Outside the class ViewController:
struct User: Codable {
let id: Int
let name: String
let with: Int
}
//In the class ViewController:
@IBAction func getJson(_ sender: NSButton) {
let url = URL(string: "https://example.com")!
URLSession.shared.dataTask(with: url) { data, _, _ in
if let data = data {
let result = try? JSONDecoder().decode(User.self, from: data)
//let result2 = result!.name //it works
//let result3 = result!.with-hyphen //it does not work
//print (result3)
}
}.resume()
}
I can safe in a let the regular "id" and "name" but I do not know how to deal with the keys with hyphens, in the example: "with-hyphen"
(Swift, macOS, Storyboards)
How to open a View with code and macOS? (a View, not a Window)
I can open a Window Controller:
var controller: NSWindowController?
if controller == nil {
let storyboard:NSStoryboard = NSStoryboard(name: "Main", bundle: nil)
controller = storyboard.instantiateController(withIdentifier: "window1") as? NSWindowController
}
controller?.showWindow(self)
But I could not figure out how to open a View Controller. What would the be equivalent code for a View Controller in macOS?
(Swift, macOS, storyboards)
How to open a view (not a window) by clicking a menu item?
Let's suppose I have one window and two views:
I try to open with Menu item: "open view 1" and item: "open view 2":
(Here I asked the same question. Claude 31 solved very well with a button in one of the views. Here I am asking the same but with a button in the menu or menu item: https://developer.apple.com/forums/thread/690644 )
(Be aware that I am a beginner and I try to learn. Please explain in a simple way if possible)
(Swift, macOS, storyboards)
I try to make a simple page with an scroll, text and images. Similar to help pages in all mac programs. For instance, TextEdit help:
I tried many things. For instance:
Scroll View with constraints 0 to top, bottom, leading, trailing
Inside the Scroll View: a Label, an Image View, another Label. The labels with constraints 20px top, bottom, leading, trailing.
Labels Priority 750. The rest of constraints Priority 1000
With this, the user can change the width and height of the window, the text adapts but if the window is smaller than the content, I do not see the scroll. The attributes of the scroll are Show Vertical Scroller and Automatically Hide Scroller. If I change one of the options, I do not see the scroll space (or I see the scroll but not the movable part of the scroll)
How to have text, images, a window that can change width, height, and a scroll that appears when the content is bigger than the window. (Like a regular web page or the help that Apple has in many programs)?
Is it possible to convert a var with the day of the week to a number? (and the other way around)
let diaSetmana = "Monday"
let diaSetmana2 = 2
I know how to convert from date():
let date = Date()
let calendar = Calendar.current
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "EEEE"
let dayString = dateFormatter.string(from: date)
I am asking for converting not from date() but from a var that I have a random day of the week