I don't typically write reviews on new updates as they typically are fine. For once I did want to mention one thing that bothers me and hoping it can be changed. I greatly dislike the new emoji keyboard and how its become bigger. I don't like the large keyboard layout and they kind of hurt my eyes. I'm near sighted and so its not needed for me to have them so big. Is there a way to revert them to the previous version? I don't know if anyone else has the same thoughts on this subject. Maybe a possible option to have the ability to switch the keyboard size to which ever suits the user? Anything would be helpful as I do enjoy using the emojis but now I'm avoiding them.
Thank you for your time and consideration.
General
RSS for tagExplore the art and science of app design. Discuss user interface (UI) design principles, user experience (UX) best practices, and share design resources and inspiration.
Post
Replies
Boosts
Views
Activity
Is there one in SF Symbols? I couldn't find one.
If not, how do I open an enhancement ticket to request one be added?
Thank you all in advance.
Hello friends,
We are about to launch new app where we want to implement 3d animations that we designed in Cinema 4d and rendered it in Redshift render engine.
We worked with sRGB color profile and ACEScg colors profile which both works fine and display correct on Windows machines, but we got to the point where nothing is correct on Apple devices – simply we lost our colors, apple devices displays our 3d animation in a wrong way, since windows works fine.
Does anyone know the best workflow from Cinema 4d + Redshift + After Effects to match same colors on both systems and everywhere? We already tried youtube, adobe support, exporting it in EXR, PNG, JPG, LINEAR, TIFF, MP4 etc. – Importing it to After effects with sRGB workflow and ACEScg – it doesnt't work on Macbook, ipad, iphone etc.
Please help
CHRIS
This is my first day with IOS 18.1.1 and so far it’s smooth. my only problem is how chaotic the photos app has become during the update. For one, i dont like how to access any of the organization it’s at the way bottom and even after customizing and reorganizing there’s no way to to move that section to the top. i also dont like how all my photos are just out on front street when the app is launched, it makes everything hard to look at and hard to find. please fix this and make browsing photos enjoyable again.
Hi,
We have few MacStudio servers that when we ssh as users to it and trying to run some commands fro /usr/bin, they staying in hang state for infinite.
When root user do the same commands are working properly
Example for hanging commands : clang, gcc, make, ld etc
Add as attachment the dtruss out for ld -v command to help debug it
Thanks,
Amir
dtruss out from ld -v command
I have a multi view app I am trying to develop as my first app. I have gone through much of HackingwithSwiftui
Xcode 16.1 SwiftUI on a MacAir
The prior views in the app store various information. golf Course info in one and Golfers info in another.
This third view is to record rounds of golf played. I started it simple with me entering input manually and that worked.
I then decided to start using pickers with the first two being a DatePicker and the second pulling in the nickname(Handle) for players to select from. in a Handle Picker.
Following is my code. I can select a date as of Now and prior for date played and also the second picker does pull in the all the Handles from my prior view and I can select a Handle of the player for the round.
I then fill in all the other information. When I exit the view I do see that the Round is created but the Date always defaults to Now and the Handle stays blank. When i go back in to edit the round I can change the date and select a Handle but can get them to save.
I have tried many things and searched for days on the web for examples with no luck. I am sure its something simple.
Any help is appreciated as I want to add for pickers for course, tee and other fields. But until I figure out what I am missing the project is at a standstill.
import SwiftUI
import SwiftData
struct RoundsEditDataView: View {
@Bindable var roundsdata: RoundsData
@Environment(.modelContext) private var modelContext
@State private var playDate = Date.now
@Query(sort: \PlayerData.playerHandle) private var players: [PlayerData]
@State private var selectedHandle: PlayerData? = nil
var body: some View {
Form {
HStack {
Text("Course:")
TextField("Course Name", text: $roundsdata.roundscourseName)
.textContentType(.name)
}
HStack {
DatePicker("Date:", selection: $playDate, in: ...Date(),
displayedComponents: .date)
}
Section {
Picker("Handle:", selection: $selectedHandle) {
Text("Select a Handle").tag(nil as PlayerData?)
ForEach(players, id: \.self) { player in
HStack {
Text(player.playerHandle)
.frame(maxWidth: .infinity, alignment: .leading)
.tag(player as PlayerData?)
}
.frame(maxWidth: .infinity, alignment: .leading)
.tag(player as PlayerData?)
}
}
// .pickerStyle(.inline) this does not fix issue or design wise work
}
The rest of this works fine for now until I decide to convert more to picker lists.
HStack {
Text("Tee:")
TextField("Tee", text: $roundsdata.roundsTee)
.textContentType(.name)
}
HStack {
Text("Handicap:")
TextField("Handicap", value: $roundsdata.roundsHandicap, format: .number)
.textContentType(.name)
}
HStack {
Text("*****:")
TextField("*****", value: $roundsdata.roundsGross, format: .number)
}
HStack {
Text("Net:")
TextField("Net", value: $roundsdata.roundsNet, format: .number)
.textContentType(.name)
}
HStack {
Text("Rating:")
TextField("Rating", value: $roundsdata.roundsRating, format: .number)
.textContentType(.name)
}
HStack {
Text("Slope:")
TextField("Slope", value: $roundsdata.roundsSlope, format: .number)
.textContentType(.name)
}
}
}
}
Is there a way to revert back to the old designs? The new designs in iOS 18 are so bad and hard to use. I can’t imagine anyone actively tested this for user feedback before releasing.
I've deleted all photos from the Photos app including from the Deleted Photos album, yet iPhone Storage reports Photos storage at 62.3 GB. I believe this is due to a bug. I've found no solution.
The app or its metadata appears to contain potentially misleading content. Specifically, the app includes content that resembles AlphaCargo without the necessary authorizatin.
Hi,
I am developing an application using Flutter to connect to a Bluetooth Classic device (device is also developed by me), as Flutter is multi-platform I have tested this functionality in Android devices and it works fine, but when I want to develop the functionality of scanning BT devices, connect and send commands it is not possible due to I haven't found classic BT libraries to make this actions for iOS, do you know any library? There is any reason why isn't it possible?
Hello I’m here to post my recent updates errors and bugs on iOS 18.2
After installing after few hours my screen display was flashing like thunder I notice two times first I tot its video second time realised it was error
after that screen got green color and brightness increased
when check with settings black screen became green.
i tried calling customer support they asked me to backup the device and turn off beta updates and reinstall the software using computer.
but I don’t want to downgrade becoz I got lost gbs of photos videos and some datas stored on app sometimes I can backup and restore photos and video but I don’t want to miss out other important datas stored on app specially. Please some one help me and suggest me how to downgrade to iOS 18.1
another question shall wait for next update coming in December while waiting any damage will happen to my screen display or to my battery?? Pls help me
I am seeking guidance regarding the inclusion of app branding on the navigation controller across all screens within our application. Although it appears that Apple doesn't typically recommend this practice, our client has specifically requested the addition of branding elements.
Can you please advise if it is permissible to implement such branding, and whether doing so would affect the app review process?
The apple guideline state:
"Ensure branding always defers to content. Using screen space for an element that does nothing but display a brand asset can mean there’s less room for the content people care about. Aim to incorporate branding in refined, unobtrusive ways that don’t distract people from your experience."
Source: https://developer.apple.com/design/human-interface-guidelines/branding
I am experiencing strange crashes in my (ObjC) code, that insinuate some memory corruption (mostly running SHA256 decryption for file data
in my code there's a
// return object that was stored in encrypted file
- (id) objectFromEncryptedFile:(NSString *)filePath
{
// read MYCrypto object that includes encrypted object of any class
MYCrypto *encData = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
// decrypt, unarchive and return
return [encData objectFromEncryptedData:encData.data];
}
That seems to be called from different queues that are not synchronized.
It came to me that maybe NSKeyedUnarchiver is not "thread safe" and maybe unarchiveObjectWithFile is not reentrant?
Couldn't find anything in the normal documentation, but most of the old docs are no longer searchable.
Can someone shed light on this?
Hi,
I am implementing the synchronisation of SwiftData with CloudKit as described in the Apple Documentation titled - "Syncing model data across a person’s devices." My app runs fine on iPhone without activating CloudKit under "Signing and Capabilities" option. But when activated, I get a CoreData error with a code: 134060. My app is in development stage. The following is the code snippet for your reference taken from the main structure adopting the App protocol.
init() {
do {
#if DEBUG
let schema = Schema([
Debit.self,
Credit.self,
])
let modelConfiguration = ModelConfiguration(schema: schema, isStoredInMemoryOnly: false)
// Use an autorelease pool to make sure Swift deallocates the persistent
// container before setting up the SwiftData stack.
try autoreleasepool {
let desc = NSPersistentStoreDescription(url: modelConfiguration.url)
let opts = NSPersistentCloudKitContainerOptions(containerIdentifier: "iCloud.com.sureshco.MyFirstApp")
desc.cloudKitContainerOptions = opts
// Load the store synchronously so it completes before initializing the CloudKit schema.
desc.shouldAddStoreAsynchronously = false
if let mom = NSManagedObjectModel.makeManagedObjectModel(for: [
Debit.self,
Credit.self,
]) {
let container = NSPersistentCloudKitContainer(name: "MyFirstApp", managedObjectModel: mom)
container.persistentStoreDescriptions = [desc]
container.loadPersistentStores {_, err in
if let err {
fatalError(err.localizedDescription)
}
}
// Initialize the CloudKit schema after the store finishes loading.
try container.initializeCloudKitSchema()
// Remove and unload the store from the persistent container.
if let store = container.persistentStoreCoordinator.persistentStores.first {
try container.persistentStoreCoordinator.remove(store)
}
}
}
#endif
sharedModelContainer = try ModelContainer(for: schema, configurations: [modelConfiguration])
} catch {
fatalError(error.localizedDescription)
}
}
Any help will be greatly appreciated!
Regards
Suresh.
import SwiftUI
import RealmSwift
@main
struct UniqueHolidayApp: App {
init() {
migrateRealmIfNeeded()
}
var body: some Scene {
WindowGroup {
ContentView()
}
}
private func migrateRealmIfNeeded() {
let config = Realm.Configuration(
schemaVersion: 1,
migrationBlock: { migration, oldSchemaVersion in
if oldSchemaVersion < 1 {
// Realm will handle changes automatically for simple additions/removals
}
}
)
Realm.Configuration.defaultConfiguration = config
}
}
I'm new to developing with SwiftUI and I created a Pomodoro app for macOS that runs in the menu bar. I added 4 animations and when the user selects the snow animation, it starts snowing on the screen. But the app uses 20%-30% of the CPU and has high energy consumption. I can't reduce it and I couldn't find a solution.
// snow animation
import SwiftUI
struct SnowflakeView: View {
@State private var flakeYPosition: CGFloat = -100
@State private var isAnimating = false
private let flakeSize: CGFloat = CGFloat.random(in: 10...30)
private let flakeColor: Color = Color(
red: Double.random(in: 0.8...1),
green: Double.random(in: 0.9...1),
blue: Double.random(in: 1...1),
opacity: Double.random(in: 0.6...0.8)
)
private let animationDuration: Double = Double.random(in: 1...3)
private let flakeXPosition: CGFloat = CGFloat.random(in: 0...310)
var body: some View {
Text("❄️")
.font(.system(size: flakeSize))
.foregroundColor(flakeColor)
.position(x: flakeXPosition, y: flakeYPosition)
.onAppear {
if !isAnimating {
withAnimation(Animation.linear(duration: animationDuration).repeatForever(autoreverses: false)) {
flakeYPosition = 280 + 50
}
isAnimating = true
}
}
}
}
I also have how I run the animation below.
ZStack {
ForEach(0..<10, id: \.self) { index in
if selectedAnimal == "Snow" {
SnowflakeView()
} else if selectedAnimal == "Rain" {
RainDropAnimation()
}else if selectedAnimal == "Leaf"{
LeafFallAnimation()
}else if selectedAnimal == "Confetti"{
ConfettiAnimation()
}
}
}
I'm using NWListener with NWConnection. This code work great and I am able to start the listener and successfully receive connections in Xcode preview.
However, when I build/run on my phone, the listener does not seem to accept connections from the network. If the app sends a message to itself on the phone, it is received, but if I send a message to that ip/port from another network device, it is not accepted/received.
Any help or suggestions appreciated.
import Foundation
import Network
import Combine
@Observable
class UDPListener3 {
var listener: NWListener?
var queue = DispatchQueue.global(qos: .userInitiated)
var messageReceived: Data?
private(set) var isReady: Bool
private(set) var listening: Bool = false
private(set) var receiving: Bool = false
private(set) var port: UInt16 = 0
init () {
isReady = false
listening = false
receiving = false
messageReceived = nil
listener = nil
}
func GetPort() {
var portText = "\(String(describing: listener!.port))"
portText = portText.replacingOccurrences(of: "Optional(", with: "")
portText = portText.replacingOccurrences(of: ")", with: "")
portText = portText.replacingOccurrences(of: ",", with: "")
port = UInt16(portText)!
if let testPort = listener?.port?.rawValue {
self.port = testPort
}
}
func config(port: Int) {
if port > 0 {
configinit(port: NWEndpoint.Port(integerLiteral: NWEndpoint.Port.IntegerLiteralType(port)))
} else {
configinit(port: nil)
}
}
func configinit(port: NWEndpoint.Port?) {
// conifigure and create listener
let params = NWParameters.tcp
params.allowFastOpen = true
if port == nil {
self.listener = try? NWListener(using: params, on: .any)//port)
} else {
self.listener = try? NWListener(using: params, on: port!)
}
if listener != nil {
GetPort()
self.listening = true
self.listener?.stateUpdateHandler = { [self] update in
switch update {
case .ready:
self.isReady = true
print("*Listener.ready on port \(String(describing: self.listener?.port))")
GetPort()
case .failed:
// Announce we are no longer able to listen
self.listening = false
self.isReady = false
print("*Listener.failed on port \(port)")
case .cancelled:
// Announce we are no longer able to listen
self.listening = false
self.isReady = false
print("*Listener.canceled on port \(port)")
default:
print("*Listener default connecting to port \(port)... \(self.listener!.state)")
}
print()
}
self.listener?.newConnectionHandler = { connection in
print("@called listener.newConnectionHandler")
self.createConnection(connection: connection)
}
// start listening
self.listener?.start(queue: self.queue)
GetPort()
} else {
print("unable to start listener")
}
}
func createConnection(connection: NWConnection) {
connection.stateUpdateHandler = { (newState) in
switch (newState) {
case .ready:
print(" ...Connection.ready")// - \(connection)")
self.receive(connection)
case .cancelled:
print(" ...Connection.cancelled")// - \(connection)")
case .failed:
print(" ...Connection.failed")// - \(connection)")
default:
print(" ...Connection.default: \(connection.state)")// - \(connection)")
}
}
print(" ...connection starting")
connection.start(queue: .global())
}
func receive(_ connection: NWConnection) {
print()
print(" ...connection receiving")
// respond 200 received
self.respond(on: connection)
//connection.receiveMessage() { [self] data, context, isComplete, error in //<-- this would not return until timeout expired??
connection.receive(minimumIncompleteLength: 20000, maximumLength: 200000) { [self] data, context, isComplete, error in
receiving = true
/* Check what we have */
var message = ""
if data != nil {
message = String(decoding: data!, as: UTF8.self)
} else {
message = ""
}
// ERROR
if let unwrappedError = error {
print(" >>ERROR: received in \(#function) - \(unwrappedError)")
receiving = false
return
}
// NO DATA
guard let data = data else {
print(" >>NO DATA with context - \(String(describing: context))")
receiving = false
return
}
// NOT COMPLETE
if !isComplete {
print(" >>NOT COMPLETE with context - \(String(describing: context))")
//return
}
// RECEIVED A MESSAGE
if message != "" {
self.messageReceived = data
print(" ...received data - \(String(describing: context)) \(String(describing: data))")
receiving = false
connection.cancel()
return
}
// keep receiving,
self.receive(connection)
}
}
}
func respond(on connection: NWConnection) {
let response = """
HTTP/1.1 200 OK
Content-Length: 2
OK
"""
connection.send(
content: response.data(using: .utf8),
completion: .idempotent
)
}
func cancel() {
self.listener?.cancel()
self.listener = nil
self.listening = false
self.isReady = false
print("listener disabled")
}
}
Finally updated my phone lastnight and I honestly wish I had NEVER bothered!
Apple, what on earth is going on with your design team?! It’s a nightmare!!!!!!
incsnt find anything, my photos are a nightmare when I knew wheee everything was. Now I have to try and work out how to find things more when it wasn’t ideal during a consultation with clients as I looked incompetent.
The settings for passwords, battery etc have all been changed aswell and the pull down part for locking/bluetooth/aeroplane modes are all stupid aswell. Overall, extremely unsatisided with the overall update.
I stayed with Apple because of the convenience of knowing the layout. I switched once to android and hated it because it had a different layout and I didnt like it having to start again when I’m already so busy. i lasted 24 hours with that phone before taking it back and upgrading back to Apple. Since the new layout and since I’m due an upgrade, there’s now nothing stopping me as your customer from leaving and now getting an android phone because I now find the upgrade difficult to navigate. If I could change it back I would.
Overall dissatisfied and now willing to upgrade to another Apple next month.
I called the viewWillDisappear method in UIViewController
AVCaptureSession *session = self.session;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
if (!session.running) {
[session startRunning];
}
});
I called the viewWillDisappear method
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
AVCaptureSession *session = self.session;
if (session && session.running) {
[session stopRunning];
}
});
But when the user exits the background and returns to the current page, clicking 'Return' will cause an exception
Abnormal information:
#36 Thread
SIGSEGV
SEGV_ACCERR
libdispatch.dylib
_dispatch_source_set_timer + 32
one
PrivacyAccounting
0x00000001a5ede000 + 533590244180685288
two
PrivacyAccounting
0x00000001a5ede000 + 533590244180685288
three
PrivacyAccounting
0x00000001a5ede000 + 1236823037899193652
four
libdispatch.dylib
0x000000018ea01000 + 3414669699500290324
libsystem_pthread.dylib
_pthread_wqthread + 14360117738498687264
Does Apple Allow for iOS Native Apps to be vetted by third party mobile app vetting companies?