I am developing an app that requires calling the iPhone's Face ID module to scan users' facial data. Where can I find Apple's design resources and guidelines for Face ID? The Face ID resources available in Figma are incomplete, and I need more support.
For example, in the iPhone settings, the scenario: the UI interface for scanning the user's face to collect data, specifically the circular design in the "How to Set Up Face ID" screen.
Create elegant and intuitive apps that integrate seamlessly with Apple platforms.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
We are trying to write an iOS app that supports regular and constrained widths using a TabView with .tabViewStyle(.sidebarAdaptable). On the surface this seems like a great way to write an app that supports all the different widths that your app may run in. Especially since Stage Manager and Apple Vision have made it easy for users to resize your apps window while it is running.
We are facing many challenges though. I will give a brief one liner of each below, but to truly experience them you need to run the sample app, or watch the sample videos included.
Issues
Basic TabView Issues
Double Navigation Bar: When tabs are collapsed into a "More" tab, there's an unwanted double navigation bar
Selection Sync: Tab selection gets out of sync when switching between narrow/wide layouts through the "More" tab
TabView Crash
Fatal crash occurs when resizing window to narrow width while Tab 5 is selected
Error: SwiftUI/SidebarAdaptableTabViewStyle_iOS.swift:482: Fatal error: Tried to update with invalid selection value
Section Handling Issues
Section Display Bug: Bottom tabs incorrectly show section names instead of tab names in narrow width
Tab Selection Mismatch: Tab identifiers don't match selected tabs in narrow width mode
Customization Issues
Inconsistent "Edit" button behavior in More tab
Unable to properly disable tab customization
Sample app and video
https://github.com/copia-wealth-studios/swiftui-tabview-sample
In macOS application, we are using SwiftUI as an entry point to our application and attaching appdelegate using NSApplicationDelegateAdaptor.
We are using NSViewControllerRepresentable to add a View Controller to the hiracrchy so that we can store intance of viewcontroller and add content to it programatically .
@main
struct TWMainApp: App {
@NSApplicationDelegateAdaptor private var appDelegate: TWAppDelegate
internal var body : some Scene {
TWInitialScene ()
}
}
TWInitialScene :
public struct TWInitialScene : Scene {
public var body : some Scene {
WindowGroup {
TWInitialView ()
}
}
}
TWInitialView :
struct TWInitialView : View {
@Environment(\.scenePhase) private var scenePhase
var body : some View {
TWAppKitToSwiftUIBridge ()
}
}
TWAppKitToSwiftUIBridge :
struct TWNSKitToSwiftUIBridge : NSViewControllerRepresentable {
func makeNSViewController(context: Context) -> TWNSViewController {
let view_hierarchy : TWNSViewController
view_hierarchy = TWStaticContext.sViewController
return view_hierarchy
}
func updateNSViewController(_ nsViewController: TWNSViewController, context: Context) {
}
}
@objc
public class TWStaticContext : NSObject
{
public static let sViewController = TWNSViewController ()
public override init () {}
@objc
public static func GetViewController () -> TWNSViewController
{
return TWStaticContext.sViewController
}
}
public class TWNSViewController : NSViewController {
override public func viewDidLoad ()
{
super.viewDidLoad ()
}
}
To add content to the hirarchy we are accessing viewcontroller's intance and adding content to it like this :
public func PaintInitialScreen () {
let label = NSTextField(labelWithString: "TW window")
label.frame = NSRect(x: 100, y: 200, width: 200, height: 200)
// Adding content to viewcontroller
TWStaticContext.sViewController.view.addSubview(label)
}
We are using this approach because we have a contraint in our application that we have to update UI programatically and on compile time we dont know what we want to show . We will be adding content on runtime based on how many button we want, what label we want , where to place it etc.
When we were using purely appKit application, doing things programatically was simple but since SwiftUI is a declarative application we have to use above approach.
Rational for shifting to SwiftUI entry point is that we want our application to be future safe and since apple is more inclined to SwiffUI, we want to design our entry flow to use SwiftUI entry point . And SwiftUI being declarative, we are using appKit to add content to hiracrchy programtically.
We have used similar apprach in iOS also , where are using UIApplicationDelegateAdaptor inplace of NSApplicationAdaptor . And UIViewControllerReprestable in place of NSViewControllerRepresentable.
Is this right approach to use ?
I want to add a tool bar (setting search )to my app just like the apple file app using pure swiftUI, is it possible, if not, can i using a UIKit to implement it.
struct MainView: View {
var body: some View {
TabView {
Tab("View 1", systemImage: "square.grid.3x2") {
View1()
}
Tab("View 2", systemImage: "square.grid.2x2") {
View2()
}
}
.tabViewStyle(.sidebarAdaptable)
}
How can I put one list item at the top and another one at the bottom, retaining the NavigationView functionality?
Here is a simple app:
struct ContentView: View {
var body: some View {
NavigationView {
Sidebar()
}
}
}
struct Sidebar: View {
@State private var isActive = true
var body: some View {
List {
NavigationLink(isActive: $isActive) {
HomeView()
} label: {
Text("Home")
}
NavigationLink {
SettingsView()
} label: {
Text("Settings")
}
}
}
}
struct HomeView: View {
var body: some View {
VStack {}
.navigationTitle("Home")
}
}
struct SettingsView: View {
var body: some View {
VStack {}
.navigationTitle("Settings")
}
}
Which looks like this:
My initial though was to put a Spacer() between each NavigationLink, but it results in an unexpected view:
What i can do:
Place an empty VStack between each NavigationLink with a hard-coded height like this:
VStack {}.frame(height: 275)
Which looks like this:
But it wouldn't work if a user would want to increase the height of a window.
I could disable window resizing which is kind of fine, but not the most optimal.
Another obvious option was to replace the List with a VStack, but with this approach the styling of the NavigationLink gets broken and it does not get highlighted when I click on it.
It looks like this:
P.S. I know that NavigationView is deprecated, but i want to support macOS 12.0.
Hello! We can animate Text color via foregroundStyle very nicely in SwiftUI like so:
Text("Some text here")
.foregroundStyle(boolValue ? Color.green : Color.blue)
withAnimation {
boolValue.toggle()
}
However, if the foregroundStyle is a gradient, the color of the Text view changes immediately without animation.
The code below works to animate a gradient foregroundStyle on an SF Symbol, but it does not work when applied to a Text view. Is it possible to animate a Text view foregroundStyle between gradient values?
Image(systemName: "pencil.circle.fill")
.foregroundStyle(boolValue ? .linearGradient(colors: [.red, .orange], startPoint: .top, endPoint: .bottom) : .linearGradient(colors: [.green, .blue], startPoint: .top, endPoint: .bottom))
Thanks for your help!
Hello everyone,
I am developing an app that focuses on self-reflection, journaling, and personal insights. Users can write their thoughts, receive guided suggestions, and engage in meaningful interactions.
Over time, I have refined the app to emphasize well-being and mindfulness. Initially, I categorized it under Lifestyle, then tried Entertainment, but I am unsure which category best fits its purpose.
I would appreciate any insights on choosing the right category or refining the app’s positioning to better align with platform guidelines. Has anyone faced a similar challenge?
Looking forward to your thoughts.
Thank you!
I'm seeing a build failure when archiving for TestFlight due to removing landscape support from the project. I see tons of apps that lock portrait in the app store. Is this a new requirement for apps compatible with both iPhone and iPad? What is the best approach if I am focused on portrait? Make the app iPhone only?
Topic:
App Store Distribution & Marketing
SubTopic:
General
Tags:
Design
Xcode
Interaction Design
Accessibility
Hello,
Appeal Ticket: APL149985
Thank you for your patience as we considered your appeal.
The App Review Board determined that the original rejection feedback was valid. Your app does not comply with:
4.3(a) - Design
During our review, we found that this app duplicates the content and functionality of other apps submitted to the App Store, which is considered a form of spam and not appropriate for the App Store.
Apps submitted to the App Store should be unique and should not duplicate other apps. We encourage you to create a unique app to submit to the App Store. For more information about developing apps for the App Store, visit the Develop section of the Apple Developer website.
We appreciate your efforts to resolve this issue and look forward to reviewing your revised submission.
Best regards,
Leo
App Review Board
BlockQuote
a Blockchain based slg game got 4.3 a, I think the reviewer should know some thing about blockchain.
您好,我已经重新提交了一个版本的应用,和之前版本已经不同了,目前游戏的所有代码都是我自己写的,第三方的所有代码都被我移除了,所以代码上重复了其他游戏的是完全不存在的。
至于游戏玩法上,新的自定义技能冲榜系统,玩家可以通过“抽卡-编辑阵容-连续挑战”的方式,在遇到瓶颈时自定义技能突破关卡,这个玩法绝对是开创性的,因为已知的所有slg游戏的技能都是官方设计决定的,但是在我设计的这个玩法上,理论上所有的技能都将由玩家设计出来,这差别之大,正如区块链开创了一种崭新的去中心化的时代,和原有中心化的模式是完全不同的,据我所知,目前市面上不存在任何一款去中心化的slg游戏。但是您,尊贵的审核人员居然认为这样一款开创性的游戏是和其他中心化游戏是一样的,类同的,我相信苹果作为全球最伟大的科技公司,官方工作人员都是很专业的,都是很有见识的,都是主张创新的,主张玩家能获得独特的高质量的体验,但是这个拒绝让我疑惑。
辅助功能 | Apple Developer Documentation
In the illustration on this page related to "Prefer system-defined colors," Light is incorrectly translated as "细体". However, in the context of this article, translating it as "浅色" (light color) would be a more appropriate choice.
I noticed a discrepancy between the Material specifications for tvOS on the Developer page and the naming in the Design Resources (Sketch files). Which one should we consider authoritative?
https://developer.apple.com/design/human-interface-guidelines/materials
Scenario is when keyboard is opened within the app being developed then switch to other app, for instance, Notes app and create a note to enable keyboard from there. While the Notes app keyboard is active switch back to the developed app the keyboard in it is dismissed. Any thoughts?Thanks
My app is being rejected and all I'm being told is that it is spam.
I've tried improving various aspects of the game, but I just receive the same copy and paste rejection message each time.
I have no idea if I'm moving in the right direction or what part of my game needs to be changed or improved. Is there a game quality benchmark document or some kind of resource I can use to better understand why my game is being rejected and how to bring it to a level that meets apple's standards.
I'm observing that when a silent push notification is sent to our app, is is started up in the background for 30 seconds before being suspended until the app is launched by the user. This causes data to persist from the silent push notification to the user app launch.
I couldn't find documentation on this behavior for silent push notifications, and was wondering if it's possible to have the app terminate after handling the silent push notification. Is there documentation on the general flow of silent push notifications as well?
I'm able to handle the edge cases if the app has to be suspended until user launch, but just want to confirm that this is the expected behavior before I go about handling it this way.
I've developed an app in swift and UIKit. Its multi linguistic app supports English and Arabic. When I change the language from English to Arabic or Arabic to English. After changing language, when I navigate through different screens crash is happening randomly on different screens most of the time when I tap to navigate to a screen. And cash log is:
This time crashed with this error Exception NSException * "Not possible to remove variable:\t945: <unknown var (bug!) with engine as delegate:0x2824edf00>{id: 34210} colIndex:261 from engine <NSISEngine: 0x15c5dd5f0>{ delegate:0x15c594b50\nEngineVars:\n\t 0: objective{id: 31542} rowIndex:0\n\t 1: UIButton:0x15c6255b0.Width{id: 31545} rowIndex:1\n\t 2: 0x281c41450.marker{id: 31548} colIndex:1\n\t 3: UIButton:0x15c6255b0.Height{id: 31547} rowIndex:1073741824\n\t 4: 0x281c412c0.marker{id: 31546} colIndex:1073741825\n\t 5: UIButton:0x15c625a50.Width{id: 31549} rowIndex:11\n\t 6: 0x281c41270.marker{id: 31544} colIndex:2\n\t 7: UIButton:0x15c625a50.Height{id: 31551} rowIndex:1073741825\n\t 8: 0x281c414a0.marker{id: 31550} colIndex:1073741826\n\t 9: UILabel:0x15c625d10.Height{id: 31553} rowIndex:1073741826\n\t 10: 0x281c41590.marker{id: 31552} colIndex:1073741827\n\t 11: UIImageView:0x15c625870.Width{id: 31555} rowIndex:3\n\t 12: 0x281c41360.marker{id: 31554} colIndex:3\n\t 13: UIImageView:0x15c625870.Height{id: 31557} rowIndex:1073741827\n\t 14: 0x281c413b0.marker{id: 31556} colIndex:1073741828"... 0x0000000282fb11a0
For switching language I'm using this code snippet:
private func restartApp() {
guard let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene,
let delegate = windowScene.delegate as? SceneDelegate,
let window = delegate.window else {
return
}
// Create a new root view controller
let vc : AppLoadingVC = AppRouter.instantiateViewController(storyboard: .Splash)
let nc = UINavigationController(rootViewController: vc)
ApplicationManager.sharedInstance.isUserLoggedIn = false
DispatchQueue.main.async {
if UserDefaults.isRTL {
UIView.appearance().semanticContentAttribute = .forceRightToLeft
SideMenuController.preferences.basic.forceRightToLeft = true
Localize.setCurrentLanguage("ar")
} else {
UIView.appearance().semanticContentAttribute = .forceLeftToRight
SideMenuController.preferences.basic.forceRightToLeft = false
Localize.setCurrentLanguage("en")
}
window.rootViewController = nc
window.makeKeyAndVisible()
}
}
Please anybody help me I've been stuck here since lot of days. I tried multiple things but all in vain.
Without using a custom preview, you can set .contentShape(RoundedRectangle(cornerRadius: 30)) so that in the "zoomed in" preview of the contextMenu you can have a custom cornerRadius. However, this does not work if you create a custom preview, because then the ContentShape gets applied only to the LIFT PREVIEW, and not to the FINAL PREVIEW state. Heres a sample code - I'd love some support! :)
import SwiftUI
struct ContentView: View {
var body: some View {
VStack {
Rectangle()
.fill(Color.blue)
.frame(width: 300, height: 300)
.cornerRadius(30)
.contentShape(.contextMenuPreview, RoundedRectangle(cornerRadius: 30))
.contextMenu {
Button("Hello") {}
Button("Goofy") {}
} preview: {
Rectangle()
.fill(Color.blue)
.frame(width: 300, height: 300)
.cornerRadius(30)
//.contentShape(RoundedRectangle(cornerRadius: 30))
//.contentShape(.contextMenuPreview, RoundedRectangle(cornerRadius: 30))
}
Text("contextMenu item with large cornerRadius is not working as expected... No way to set contentShape to custom corner radius for final preview - not the lift preview")
}
}
}
I was trying to move from appkit to swiftUI. As a learning project I am building a cellular automata style project based on Pattersons Worms.. I am trying something similar to the EA game Worms? for the Commodore 64. There is a video on YouTube of the game running, but I'm not allowed to link it here.
The problem I have is that the animation is driven by a ruleset. When the automata hits a configuration that is not in the ruleset it is supposed to stop and ask the user. For each step the model returns either the next move, or nil to indicate the user need to make a choice that will be sent back to the model to be added to the ruleset.
My current approach, and I might be following the wrong path, is a ZStack where the bottom level is the grid, the middle level is the established worm segments and the top level is either the animation of the next worm segment or the user chooser to choose the segment. I've only implemented the animation of the next worm segment. The idea is that when the model adds a segment that it first animated at the top level and then displayed by the middle level. Then the top level animates the next segment. I was animating the trim on the segment to draw the line.
If the current move is nil, then the middle level draws the segment. If current move has a value, the animation draw it, and then on completion sets the current move to nil so that the bottom level draw it.
The problem I ran into was resetting the animation to draw the next segment. I've tried two approaches. in one the completion resets the animation boolean variable, but I need a manual step to set the next stage of the animation. The other uses the completion to set the next step, but it the animation doesn't run for the step and the display is an always a step behind. I'm not sure how to both update the move and reset the animation at the same time.
I have uploaded a simplified version without the full grid and simplified model to GitHub (https://github.com/thomasrdean/AnimationTest). Is there any other way to reset the animation the than the completion so I can use the completion to retrieve the next step from the model?
Hi,
there is a issue that iOS background NFC scanning will only provide a notification result, It need user click to enter my APP, can I have any method to enter my APP directly without user action ?
Hello.
Appstore is rejecting my app according to article 4.3.
But the app is not a copy, what should I do in this case?
It is useful to specify the details;
I had previously registered with my personal account and the Appstore stated that unfortunately VPN applications are not accepted with a personal account. Then they told me to register with a company account and make this application from the company account. (When I sent the application for review on my personal account, there were only a few incorrect items and the most important reason why it was not accepted was that it was a personal account).
Now we send the application for review with our company account, but as soon as it is put into in review mode, it is quickly rejected due to 4.3 spam.
The app is not a copy but completely custom created.
I don't know how to find a solution.
Can you please help with the issue?
Hello everyone,
I’d like to propose Sense & Store — a seamless integration between Safari and the App Store, powered by on-device AI, designed to understand what users are reading, searching, or selecting in Safari, and suggest relevant apps that match their current context or intention.
🔍 Key Idea:
“Sense” the user’s need through intelligent analysis of web content, then “Store” — offer the most relevant app, either already installed or available in the App Store.
🌟 Core Features:
• AI-powered context detection directly inside Safari
• Real-time app suggestions based on user intent
• Smart overlays when selecting text or data (e.g., phone numbers, emails, tools)
• Privacy-first: All AI runs on-device (Apple Neural Engine)
• Instant App Launch or Installation via StoreKit
✅ Examples:
• Reading an article on productivity? → Suggests Notion or Things.
• Looking up meditation tips? → Recommends Calm or Headspace.
• Selecting a phone number? → Offers CRM or spam blocker apps.
• Exploring code samples? → Suggests Pythonista or developer tools.
🔒 Privacy & Performance:
• 100% on-device intelligence (no data sent to servers)
• Follows Apple’s privacy framework
• Works with SafariKit + StoreKit + CoreML
⸻
I’m happy to provide a full prototype roadmap and technical architecture. Feedback and collaboration are welcome!
Would love to hear your thoughts — especially from developers who build for Safari, App Clips, or work with CoreML.
Thanks!
Jose Luiz Horta Barbosa Maurity Cruz - Apple lover...