davidbures, to swift
@davidbures@mstdn.social avatar

It will be my birthday soon on June 1st, and to celebrate, I’ll be offering a super special discount on Cork! 🎉

Starting on June 1st until June 8th, Cork will be discounted 60 percent! Yes, SIXTY, the largest discount ever.

I’ll be sharing the discount code later, so be sure to keep an eye on my profile or @CorkApp (or even follow me if you want to, I’d really appreciate that!)

#swift #swiftui #BuildInPublic #homebrew #CorkApp #apps #indieappsales #macos

image/png
image/png
image/png

elkraneo, to accessibility
@elkraneo@mastodon.social avatar

I was going to leave Feedback® about making SwiftUI .accessibilityLabel work with SSML, but I found out that we could cook it ourselves
#Accessibility #SwiftUI

https://www.elkraneo.com/swiftui-ssml-powered-accessibility-labels/

kevinissac, to SwiftUI
@kevinissac@mastodon.online avatar

Track My Domains is nearing completion! ✨ What are your thoughts? Any suggestions or ideas are welcome. #swiftui

dhanish, to swift
@dhanish@mastodon.social avatar

From 2 days I've been trying to animate icons in a small utility app I made with MenuBarExtra. I can’t seem to figure out how Paste app did this animation, that goes off every time the user copies something. Anyone? Any idea?

video/mp4

omarthamri, to SwiftUI
@omarthamri@iosdev.space avatar

@swiftui @swift Exciting News! 🎉 Just dropped Part 32 of my "Let's Build WhatsApp clone Using SwiftUI and “firebase” playlist! 📺🛠️ Dive deeper into Swift development as we take our app to the next level. 🚀 Check it out now and let's code together! 🔗 https://www.youtube.com/watch?v=iVwU2yRMXoU #SwiftUI #iOSDev

davidbures, to swift
@davidbures@mstdn.social avatar

I have another (slightly stupid) SwiftUI question: How can you set the size of a NSViewRepresentable?

Suppose I have this code:
https://gist.github.com/buresdv/92842f84d0e706d3dcdae5587f163001

I want to limit the width of this NSViewRepresentable to 100

I can't use .frame when using this view in SwiftUI, because that results in the attached picture, so I suppose you have to set the size inside the NSViewRepresentable itself. But how? 🤔

Also shoutout to @nicoreese for answering the previous question 🎉

#swift #swiftui #macdev

StewartLynch, to SwiftUI
@StewartLynch@iosdev.space avatar

The 2nd video in the 7 part #SwiftUI #WeatherKit series is now available.

In this video we will introduce locationManager so that the app will be able to determine your current location and display the weather for that location when the app launches.

https://youtu.be/bl_0hNyoeWs

rafa, to SwiftUI
@rafa@mastodon.design avatar

My Safari window 10 minutes into development

davidbures, to SwiftUI
@davidbures@mstdn.social avatar

I wonder, is there a built-in AppKit/SwiftUI component that lets you show a folder structure like this? Or do you have to create a custo one? I can't think of a way to look this up 🤔

davidbures, to swift
@davidbures@mstdn.social avatar

I'm looking for some volunteers to test a new Cork version. There's one huge bug that needed to be fixed before the next version is released. Are you up for it?

I'm specifically looking for people with a lot of installed Homebrew packages.

nwale, to SwiftUI
@nwale@mastodon.social avatar

#swiftui has been going well, but it always feels like there are little bits missing

MuseumShuffle, to SwiftUI
@MuseumShuffle@mastodon.social avatar

Shout out to @dvrzan for helping me get a better understanding of how to use localizable Strings.

Thanks to her excellent blog post I was storing them like the top part, but was confused about how to handle Strings with arguments.

She showed me the bottom part is a way to deal with that and the String still shows up in my String Catalog.

https://www.danijelavrzan.com/posts/2023/06/string-catalog/

#SwiftUI

marcel, to SwiftUI
@marcel@mastodon.social avatar

I'm not sure whether I love or hate this micro toggle. #SwiftUI #BuildInPublic

video/mp4

n0rthk1n9, to iOS
@n0rthk1n9@mastodon.social avatar

Hi there im back with Day 49 of 🙋‍♂️ Today I used a really cool blog article written by my friend @JagCesar to change how my App Intents are displayed in the Shortcuts app and in spotlight search 😍 I also refined the favorites and history lists with some smooth animations 🤤

If you want to make your App intents look stylish too, here you go:

https://blog.ambi.se/ios-17-color-intents

davidbures, to swift
@davidbures@mstdn.social avatar

Rizzference 1.0.1 got approved:

  • Changed the way paywalls are displayed, which fixes them not appearing on older iOS versions (fullScreenCover → navigation screen)
  • Added a very unobtrusive review prompt

Rizzference is a fast dictionary for modern slang. Check it out on the App Store: https://apps.apple.com/en/app/rizzference/id6474303013

If you like the app, I'd appreciate if you reviewed it. It really helps a lot! 😊

gabtheodor, to SwiftUI
@gabtheodor@mastodon.cloud avatar

A small SwiftUI Tip! 💡

Use the tint(_:) view modifier to change the foreground color of a Picker when using the .menu style.

#SwiftUI #iOSDev

teissler, to SwiftUI
@teissler@hachyderm.io avatar

WWDC24 is right around the corner. Before the excitement and rush of what's to come, I want to share some navigation fun facts and tips. None of this is new, having been discussed previously in sessions, etc. From talking with developers, these are parts of the system that are often overlooked, or forgotten about This is all running on macOS Sonoma 14.4, Xcode 15.3

teissler,
@teissler@hachyderm.io avatar
  1. List selection can drive navigation pushes. You can populate the selection binding with a value-destination NavigationLink, or, any other way you would normally populate it. #21DaysOfSwiftUINavigation #SwiftUI

A video showing a compact NavigationSplitView on iPhone Previews next to a code sample. The preview shows a list of with 4 elements, 3 navigation links, and 1 Text row. All 4 rows get a grey highlight when active. The non-navigation link row, the simple tagged Text, has no chevron, but still highlights gray in sync with the push progress. Code: import SwiftUI enum Sports: String, Hashable { case pickleball case dance case archery case volleyball } struct Day1: View { @State private var selection: Sports? var body: some View { NavigationSplitView { VStack { List(selection: $selection) { NavigationLink("Pickleball", value: Sports.pickleball) NavigationLink("Dance", value: Sports.dance) NavigationLink("Archery", value: Sports.archery) Text("Volleyball").tag(Sports.volleyball) } } } detail: { if let selection { VStack { Text(selection.rawValue.capitalized(with: .current)) Image(systemName: "figure.(selection.rawValue)") } } else { ContentUnavailableView( "Make a selection", systemImage: "volleyball") } } } } #Preview { Day1() }

teissler,
@teissler@hachyderm.io avatar
  1. NavigationStack and NavigationSplitView are intended to be used statically — establish the structure of your scene and generally don't move them around (there are some exceptions). Don't push a NavigationStack as part of a navigation destination. SwiftUI tries to warn in logs when it detects this.
    At the risk of teaching ChatGPT anti-patterns, here is an anti-pattern! Don't try this at home, or anywhere else you take your MacBooks.
    #21DaysOfSwiftUINavigation #SwiftUI
teissler,
@teissler@hachyderm.io avatar

2 (cont). It's tempting to treat NavigationStack like a UINavigationController and nest them, hiding toolbars to try to maintain the illusion of a single stack. This isn't how NavigationStack works — you can get into tricky configurations: what should happen if a stack's path contains another stack's path? Which stack is a .navigationDestination intended to be consumed by? #21DaysOfSwiftUINavigation #SwiftUI

teissler,
@teissler@hachyderm.io avatar

2 (cont) Instead of the code above, try this version. It's helpful to think of this example as running on an iPad in the regular horizontal size class. The stack is firmly in place in the detail column. The view-destination NavigationLinks will "root-replace" the detail column. I.e. they will leave the stack in place, and replace the Text("Select a feature") root view. navigationDestination modifiers can be specified modularly per feature. #21DaysOfSwiftUINavigation #SwiftUI

A video showing a NavigationSplitView with two links in the sidebar, “Feature 1” and “Feature 2”. Each link root-replaces the stack in the detail view, and can push destinations specific to its feature. Code: struct Day2: View { @State var path = NavigationPath() @State var selection: Int? = nil var body: some View { NavigationSplitView { List { NavigationLink("Feature 1") { Feature1() } NavigationLink("Feature 2") { Feature2() } } } detail: { NavigationStack(path: $path) { Text("Select a feature") } } } } struct Feature1: View { var body: some View { NavigationLink("Push Red", value: Color.red) .navigationDestination(for: Color.self) { $0 } } } struct Feature2: View { var body: some View { NavigationLink("Push 'Hi!'", value: "Hi") .navigationDestination(for: String.self) { Text($0) } } }

teissler,
@teissler@hachyderm.io avatar
  1. The navigation APIs give different options for pushing a view or root replacing a column. In trivial examples, the API used seems arbitrary, but in larger apps, each version has tradeoffs. I could spell the example from yesterday like this instead:

A sample of SwiftUI code running macOS previews. The preview picks Feature 1 in the sidebar, changing the view shown in the detail. Then it pushes the red view with the “Push Red” button in the detail. Then, Feature 2 is selected in the sidebar, popping the path back to empty and displaying the original detail view for Feature 2. Green is pushed, then Feature 2 is command clicked, getting us back to the starting state. import SwiftUI struct Day3: View { @State var path = NavigationPath() @State var selection: Int? var body: some View { NavigationSplitView { List(selection: $selection) { NavigationLink("Feature 1", value: 1) NavigationLink("Feature 2", value: 2) } } detail: { NavigationStack(path: $path) { if let selection { feature(for: selection) } else { Text("Select a feature") } } } } @ViewBuilder func feature(for selection: Int) -> some View { switch selection { case 1: Feature1() case 2: Feature2() default: fatalError() } } } { Day3() }

teissler,
@teissler@hachyderm.io avatar

3 cont) BTW I'm checking these samples as much as I can, but also doing this before bed 😴 So ask me if something looks off. In this version, navigation state is more explicit — selection and path are tracked by @State. This allows highly accurate deep linking, but a slightly less modular architecture. Anyone who wants to add a feature must integrate with the feature(for:) method. In the prior version, it was a matter of simply adding a view-destination link. #21DaysOfSwiftUINavigation #SwiftUI

helge, to apple
@helge@mastodon.social avatar
j4ck, to random
@j4ck@iosdev.space avatar

Starting a new project recently and:

  • Wading in to the SwiftData waters and added saving to a context, and I’m impressed. Gave the app an infinite loop at the view layer and we’ll fix that later.
  • Doodled a couple candidates for a development and alternate app icon! Someone has to bring a little culture.
  • Just that tiny bit of progress today but the momentum is what’s important.
j4ck,
@j4ck@iosdev.space avatar

I’m proud to introduce you to Bike Index: an open-source iOS app for the world’s leading bike registration and recovery service of the same name! Bikes mean everything to their riders: freedom of movement, ability to transport cargo, exercise and empowerment, connecting with nature and the great outdoors. Bike Index helps you recover your bike if it’s ever lost or stolen. Built with and

Direct link here https://apps.apple.com/us/app/bike-index/id6477746994

  • All
  • Subscribed
  • Moderated
  • Favorites
  • anitta
  • InstantRegret
  • mdbf
  • ngwrru68w68
  • magazineikmin
  • thenastyranch
  • rosin
  • khanakhh
  • osvaldo12
  • Youngstown
  • slotface
  • Durango
  • kavyap
  • DreamBathrooms
  • JUstTest
  • tacticalgear
  • ethstaker
  • provamag3
  • cisconetworking
  • tester
  • GTA5RPClips
  • cubers
  • everett
  • modclub
  • megavids
  • normalnudes
  • Leos
  • lostlight
  • All magazines