An WWDC 25 a neutral value was demonstrated that allows the Slider to be 'coloured in' from the point of the neutral value to the current thumb position. Trying to use this in Dev release 1 I get errors saying no such modifier.
Was this functionality released in Dev Release 1 or am I using it incorrectly?
How did we do? We’d love to know your thoughts on this year’s conference. Take the survey here
SwiftUI
RSS for tagProvide views, controls, and layout structures for declaring your app's user interface using SwiftUI.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
I'm using SwiftUI's TextEditor. I'd like to include an undo button in my UI that operates on the TextEditor. I don't see a way to hook this up. You can get the UndoManager from the environment, but this is not the undo manager the TextEditor is using. I know that UITextView uses an undocumented UndoManager (_UITextUndoManager) and I've accessed that before when using a UIViewRepresentable wrapper around UITextView. I'd like to achieve the same with TextEditor.
Topic:
UI Frameworks
SubTopic:
SwiftUI
I'm developing an app that uses the SwiftUI .photosPicker modifier to allow the user to open videos from their photos. While many videos successfully load, one video results in the following errors occurring:
Error loading com.apple.quicktime-movie: <decode: bad range for [%@] got [offs:100 len:1229 within:0]>
Error loading public.movie: <decode: bad range for [%@] got [offs:87 len:1229 within:0]>
"The operation couldn’t be completed. (CoreTransferable.TransferableSupportError error 0.)"
I was able to isolate the line of code within the Transferable where this occurs to be the following:
try FileManager.default.copyItem(at: received.file, to: destination)
Is there something that I can do to ensure the app can reliably open any video?
The entire transferable struct is as follows:
import Foundation
import CoreTransferable
import UniformTypeIdentifiers
struct Video: Transferable {
let url: URL
let filename: String
static var transferRepresentation: some TransferRepresentation {
FileRepresentation(contentType: .mpeg4Movie) { video in
SentTransferredFile(video.url)
} importing: { received in
try Video.transfer(from: received)
}
FileRepresentation(contentType: .quickTimeMovie) { video in
SentTransferredFile(video.url)
} importing: { received in
try Video.transfer(from: received)
}
FileRepresentation(contentType: .avi) { video in
SentTransferredFile(video.url)
} importing: { received in
try Video.transfer(from: received)
}
FileRepresentation(contentType: .mpeg) { video in
SentTransferredFile(video.url)
} importing: { received in
try Video.transfer(from: received)
}
FileRepresentation(contentType: .mpeg2Video) { video in
SentTransferredFile(video.url)
} importing: { received in
try Video.transfer(from: received)
}
FileRepresentation(contentType: .video) { video in
SentTransferredFile(video.url)
} importing: { received in
try Video.transfer(from: received)
}
FileRepresentation(contentType: .movie) { video in
SentTransferredFile(video.url)
} importing: { received in
try Video.transfer(from: received)
}
}
static func transfer(from received: ReceivedTransferredFile) throws -> Video {
let destination = FileManager.default.temporaryDirectory.appendingPathComponent(received.file.lastPathComponent)
if FileManager.default.fileExists(atPath: destination.path) {
try FileManager.default.removeItem(at: destination)
}
try FileManager.default.copyItem(at: received.file, to: destination)
return Video(url: destination, filename: received.file.lastPathComponent)
}
}
Is there any way to influence the corner radius of a selection in the list? Looking at the native Apple Mail app in the iOS 26, it should be.
Topic:
UI Frameworks
SubTopic:
SwiftUI
im using the code below to put a button in the toolbar of a NavigationStack, but Text seems to have a background behind it. How can I remove this background color?
.toolbar {
ToolbarItem(placement: .automatic) {
Button(action: {
}) {
Text("Show More")
.glassEffect(.regular.interactive())
.buttonStyle(PlainButtonStyle())
}
}
}
Topic:
UI Frameworks
SubTopic:
SwiftUI
How can i achieve the same behavior as the bottom bar on the Mail app?
Button -> Search Field -> Button
right now, if do as follows, they overlap as if they are not in the same space
NavigationStack {
VStack {
HeaderView()
ListView()
}
}
.toolbar(.hidden, for: .tabBar)
.searchable(text: $searchText)
.searchToolbarBehavior(.minimize)
.toolbar {
ToolbarItem(placement: .bottomBar) {
Button {
} label: {
Label("Button1", systemImage: "person")
}
}
ToolbarItem(placement: .bottomBar) {
Button {
} label: {
Label("Button2", systemImage: "person")
}
}
}
struct ContentView: View {
@State var visable: Bool = false
@State var visableHiddenMenu: Bool = false
var body: some View {
VStack {
Button("xxxx") {
visableHiddenMenu = true
print("visableHiddenMenu \(visableHiddenMenu)")
visable.toggle()
}
.popover(isPresented: $visable) {
VStack {
let _ = print("visableHiddenMenu2 \(visableHiddenMenu)")
Text("xxxx")
}
.onAppear {
print("appear \(visableHiddenMenu)")
visableHiddenMenu = visableHiddenMenu
}
}
}
.padding()
}
}
the print is
visableHiddenMenu true
visableHiddenMenu2 false
appear true
so why visableHiddenMenu2 print false?
The SwiftUI Navigation structures work in ways that are not intuitive to me. For example, I am trying to display a set of data that represents rankings contained in a balloting system that I have created. The ballots all have candidates that are ranked from highest preference to lowest.
Normally, I try to work backwards in SwiftUI, so I built the ballot editor to take a binding to the ballot itself:
struct BallotEditor: View {
@Binding var ballot: Election.Ballot
var maxRank: Int
var body: some View {
VStack {
ForEach($ballot.rankings) { $ranking in
CandidateRankingPicker(maxRanking: maxRank, ranking: $ranking)
}
}
}
}
This is embedded into a view with a list of ballots:
struct BallotsView: View {
@Binding var document: ElectionDocument
var body: some View {
List($document.ballots) { $ballot in
NavigationLink {
BallotEditor(ballot: $ballot, maxRank: document.election.candidates.count)
.padding()
} label: {
BallotListElementView(ballot: ballot)
}
}
}
}
This portion works in the editor. When the ballot is selected, the editor populates the selected candidate choices, and the editing works.
However, when I attempt to insert BallotsView into a TabView, the NavigationLink stops working as expected. I didn't think NavigationLink was the proper way to do this, but it had been working.
TabView {
Tab("Ballots", systemImage: "menucard") {
BallotsView(document: $document)
}
Tab {
CandidateView()
} label: {
Text("Candidates")
}
.tabViewStyle(.sidebarAdaptable)
}
This is my third iteration. I have tried using a List with selection, but in that case, I am unable to pass the binding to the detail view. I just don't understand how this works, and I am preparing a version in Cocoa so that I don't have to deal with it anymore.
Hi,
I was wondering if it's possible (and advisable) to use the new glass effects available in iOS 26 in Swift Charts?
For example, in a chart like the one in the image I've attached to this post, I was looking to try adding a .glassEffect modifier to the BarMarks to see how that would look and feel.
However, it seems it's not available directly on the BarMark (ChartContent) type, and I'm having trouble adding it in other ways too, such as using in on the types I supply to modifiers like foregroundStyle or clipShape.
Am I missing anything? Maybe it's just not advisable or necessary to use glass effects within Charts?
I want the effect of the model to be similar to the HoverEffect effect, but not by staring with the eyes. Instead, by clicking a button elsewhere, the corresponding model will appear highlighted,How can it be achieved
Our app displays complex, data-driven layouts that can display grids of items in addition to full width rows (essentially, nested lists). We'd like to be able to preserve cell/item portability (i.e., display in any content strip) and allow them to carry capabilities like swipe actions. In UIKit we have features in compositional layout that allow for this. However, in SwiftUI the only support seems to be at the List level.
Nesting a List within a ScrollView to get swipe actions feels like a dark road. We've rolled our own swipe actions system, but we'd much rather use a native solution. Any other options here?
Improvement ticket here FB17994843.
The inspector(isPresented:content:) modifier is not available on visionOS while the InspectorCommands struct is marked available on visionOS.
Should inspector work on visionOS as well or is this an oversight?
I have a floating action button in my app above a toolbar. The action button adds items to my app, so is pretty important and should be easy to reach. Now with the new liquid glass design, I wonder what the best way is to combine those two.
Should I use .tabViewBottomAccessory() for that? Though, that will merge down on scroll. 🤔
Or can I replace the search button in the bottom right with my own custom button action?
How to make a control that looks and feels as close as possible to NSPopUpButton in SwiftUI, so a Mac user accepts the control as being native Mac UI?
Items should have icon and text, I need separators between some items and certain items may be disabled at times, so they should not be selectable.
Picker seems to lack some of those features (separators and disabled items), and Menu looks and behaves differently. Any guidance?
For now I went with Menu, but find both the "chevron.down" icon at the trailing end as well as the positioning of the menu below the control weird.
Topic:
UI Frameworks
SubTopic:
SwiftUI
I'd like to support different template views within a ViewThatFits for items within a list, allowing the list to optimize its layout for different devices.
Within the child views is a Text view that is bound to the name of an item. I'd rather the Text view simply truncate the text as necessary although it instead is influencing which view is chosen by ViewThatFits. I'd also rather not artificially set the maxWidth of the Text view as it artificially limits the width on devices where it's not necessary (e.g. iPad Pro vs. iPad mini or iPhone).
Any guidance or suggestions on how this can be accomplished as it looks very odd for the layout of one row in the list to be quite different than the rest of the rows.
Navigation Title no longer showing for first Tab in iOS/iPadOS 26 (Directives) in my app Starship SE Corps when running is Xcode 26 simulator and on iPad device itself running iPadOS 26 beta.
Launch app
Notice Navigation Title “Directives” is missing from top tab in Sidebar and Floating Tab View (iPad) and TabView (iOS).
Navigate to other tabs and Navigation Titles appear as expected.
Worked fine (as expected) in iOS/iPadOS 18.5, but broken in iOS/iPadOS 26.
Reference Feedback: FB17987650
With the advent of APNs pushs to Widgets, I would like to confirm some things. I understand that we have a budget of updates for it, however is the budget for APNs part of the budget for background updates? In other words, 1 budget for both or 2 separate budgets?
Also, can we make a push to an individual widget, or are we essentially calling .reloadAllTimelines()?
I’ve noticed with the new design language, SwiftUI views appear to not use color as much. Example, color modifiers for List View items like carets. Is this intended and can developers introduce color back into SwiftUI view elements, if desired, like in iOS/iPadOS 18?
Specifically, accent color not been used in List disclosure outline carets.
Does the new TextEditor in iOS 26, which supports rich text / AttributedString, also support the ability to add text attachments or tokens? For example, in Xcode, we can type <#foo#> to create an inline text placeholder/token which can be interacted with in a different way than standard text.
Dear all,
The scroll to top functionality of the tabItem does not scroll to the actual top of the view, when a list / scrollView is embedded in a tabView. Tapping the tabItem brings the view to the mid-point of the navigationTitle, leaving the navigationTitle half-blurred in the new iOS26:
I believe that the same issue was present in previous iOS versions as well.
Do you experience the same problem, or am I doing something wrong? The code is below.
var body: some View {
TabView {
NavigationStack {
List {
ForEach(0..<100) { i in
Text(i.formatted())
}
}
.navigationBarTitleDisplayMode(.large)
.navigationTitle("List")
}
.tabItem {
Label("List", systemImage: "list") // Tapping here while the list is scrolled down does not bring the entire list to the actual top
}
}
}
}