Into a SKScene, I add a SCNSphere as a child of SKShapeNode, as depicted below.
When the sphere hit another node (the fence in the example) the sphere is deformed as it were elastic.
I didn't found any information about elastic properties.
Someone know a way to avoid the deformation?
import SwiftUI
import SpriteKit
import SceneKit
@main struct MyApp: App
{
var body: some Scene
{
WindowGroup {SpriteView(scene: GameSceneSK(size: UIScreen.main.bounds.size))}
}
}
class GameSceneSK: SKScene
{
override func sceneDidLoad() {
var fencePoints = [
CGPoint(x: 300, y: 0), CGPoint(x: 300, y: 400), CGPoint(x: 0, y: 400)
]
let fence = SKShapeNode(points: &fencePoints,
count: fencePoints.count)
fence.physicsBody = SKPhysicsBody(edgeChainFrom: fence.path!)
addChild(fence)
let sphereGeometry = SCNSphere(radius: 20)
let sphereNode = SCNNode(geometry: sphereGeometry)
let sphereScnScene = SCNScene()
sphereScnScene.rootNode.addChildNode(sphereNode)
let ball3D = SK3DNode(viewportSize: CGSize(width: 40,
height: 40))
ball3D.scnScene = sphereScnScene
let ball = SKShapeNode(circleOfRadius: 20)
ball.physicsBody = SKPhysicsBody(circleOfRadius: 20)
ball.addChild(ball3D)
physicsWorld.gravity = CGVector(dx: 0.2, dy: 0.2)
addChild(ball)
}
}
Post
Replies
Boosts
Views
Activity
On App Store there is the new request to declared if I am a trader operator or not under the new EU law.
As many I'm a single developer so the declaration can be reduced to "any natural person [...] who is acting [...] for purposes relating to his or her trade, business, craft or profession.", to learn more Apple links to EU commission.
I'm not 100% sure if, a single developer whit very small business and which use only Apple Store to distribute its apps, can declared "This is the account of a supplier who is not a trader".
Is someone more legal expert than me able to replay?
This simple text:
Text("10'20\"")
when the localisation is a RightToLeft, like Arabic
on iMac show "20'10
on iOS show 10'20"
Which is the correct one?
Why the are different?
This sample code colorise the navigation bar, but while the window is in fullscreen or in splitView on the Mac, only the left sidebar is colorised.
How can be the full navigation bar be colorised also on full screen?
var body: some Scene
{
WindowGroup
{
NavigationSplitView
{
ForEach(1..<3) { (i) in Text("\(i)") }
}
detail:
{
ForEach(1..<3) { (i) in Text("\(i)") }
}
.toolbarBackground(.yellow)
}
}
I agree with Apple Human Interface Guidelines that states "Design a launch screen that’s nearly identical to the first screen of your app", but:
A SwiftUI App for both macOS and iOS cannot have a storyboard Launch Screen
Images can be scaled only at: 2x/3x, Compact/Regular, iPhone/iPad
Launch Screen can have central, top (Navigation bar) and bottom (Tab Bar and Toolbar) images
Launch screen images are centered in the screen space
Launch screen images are stretched to fill the screen space
With the rules above, I'm unable to create launch screens for every screen size. If the image in the asset is sized for a small screen, i.e. an iPhone SE, it will be distorted in a 'long' screen, i.e. an iPhone 14, and viceversa.
Have I missed some possibility to better define how to define or manage the launch screen images?
The sample code:
struct ContentView: View {
var count: Int = 0
var body: some View {
VStack {
Text("Order \(count) Tickets")
}
}
}
Apparently don't use the Localizable.stringsdict
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Order %d Tickets</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@Tickets@</string>
<key>Tickets</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>d</string>
<key>zero</key>
<string>zero</string>
<key>one</key>
<string>one</string>
<key>other</key>
<string>other</string>
</dict>
</dict>
</dict>
</plist>
What what am I doing wrong?
The Apple Distribution certificate is present in the login Keychain, as well as the Development one.
In Xcode preferences both are visibile and valid.
In Xcode target only the development certificate is present and I'm unable to set the distribution one.
For this reason my last app has been refused on the Apple Store Connect.
How can I set the distribution certificate on the App target?
On MacOS popups have opacity < 1.
in Dark Mode, text on popup over a clear background isn't visible clearly.
How to change the opacity of the popup?
I added in the Xcode project:
<my App>/
Resources/
<my App>.help/
Content/
Info.plist
Resources/
search.helpindex /*localized */
index.html /*localized */
Page1.html /*localized */
And, in the Project's Info.plist:
<key>CFBundleHelpBookFolder</key>
<string><my App>.help</string>
<key>CFBundleHelpBookName</key>
<string><project' bundle id>.help</string>
But when I archive it, the book help has been moved:
<my App>/
Content/
Resources/
Info.plist
en.lproj/
search.helpindex
index.html
Page1.htm
So the help book, as is, is missing.
If I manually move the files and folders in the Package to reconstruct the help book structure, it works.
What I have to do in Xcode to let it archive the Help book?
On Xcode 13.3 and iOS15.4 I don't found a way to add something in the bottom bar without Xcode warning. This sample of swiftUI code:
{
var body: some View {
Text("Hello, World!")
.toolbar {
ToolbarItem(placement: .bottomBar) {
Text("Bottom Bar")
}
}
}
}
causes: "Unable to simultaneously satisfy constraints." (a long list follows).
Am I missing something?
In App Store Connect Trends tab the Sales graph show one sale happened the last day of the period; all other graphs (App Units, Top Apps, Territories) have don't have the corresponding app.
I have a storyboard based project with UIPickerView and I like to port it on the Mac with "Optimised Interface for Mac".
My idea was to: In the storyboard disable installation of the UIPickerView for idiom=Mac variation.
In the code substitute UIPickerView with SwiftUI Picker.
What I obtained is the error: "UIPickerView is not supported when running Catalyst apps in the Mac idiom".
This error is caused by the SwiftUI Picker (it is present even if remove UIPickerView and all its references).
If both the UIPickerView and the SwiftUI Picker cannot be used in a storyboard based project, how can a generic Picker behaviour be obtained in a storyboard based project compatible with Mac idiom?
I'd have a speech at a begin of a long pressure:
class Cell: UITableViewCell
{
override func awakeFromNib()
{
...
let willSpeech = UILongPressGestureRecognizer(target: self, action: #selector(longPress(gesture:)))
button.addGestureRecognizer(willSpeech)
}
@objc func longPress(gesture: UILongPressGestureRecognizer)
{
switch gesture.state
{
case .began:
let utterance = AVSpeechUtterance(string: "hello")
let speechSynthesizer = AVSpeechSynthesizer()
speechSynthesizer.speak(utterance)
...
}
}
}
But the speech start only when the button is released.
Is there a way to let the speech start immediately even during a long pressure gesture recogniser?
DoubleColumnNavigationViewStyle, on iPad, left an unusable space at the top.
It seems to be a navigation bar's title, but the navigation bar code apply to the main navigation bar.
Is there a way to hide, or at least use, the inner navigation bar?
The sample code below reveals part of the screen unused by the App.
import UniformTypeIdentifiers
@main struct RugbyTimeApp: App {
@SceneBuilder var body: some Scene {
DocumentGroup(
newDocument: {() -> ReferenceDocument in ReferenceDocument()},
editor: {_ -> MainView in MainView()}
)
}
}
struct MainView: View {
var body: some View {
NavigationView {
Text("Side View")
.frame(maxWidth: .infinity, maxHeight: .infinity)
.background(Color.green)
Text("Hello world")
.frame(maxWidth: .infinity, maxHeight: .infinity)
.background(Color.red)
}
.navigationViewStyle(DoubleColumnNavigationViewStyle())
.navigationTitle("Nav Title")
.toolbar
{
ToolbarItem(placement: .navigation, content: {Button("Next page", action: {})})
}
}
}
class ReferenceDocument: ReferenceFileDocument {
static var readableContentTypes = [UTType.plainText]
init() {}
required init(configuration: ReadConfiguration) throws {}
func snapshot(contentType: UTType) throws -> Int {return 0}
func fileWrapper(snapshot: Int, configuration: WriteConfiguration) throws -> FileWrapper {
let data: Data = try JSONEncoder().encode(snapshot)
return FileWrapper(regularFileWithContents: data)
}
}
Since Xcode 11 setting iPad and Mac in General / Deployment Info fo a target enable it to run in iPad as well as in iMac.
When I try to run on the iMac a document app, even the very simple one created by the Xcode on its template, it fails with the error:
If the app is a document app running it in a Mac fails with the error: [OpenSavePanels] ERROR: Unable to display open panel: your app is missing the User Selected File Read app sandbox entitlement. Please ensure that your app's target capabilities include the proper entitlements.
What have to be added in the project to let a document app running on iPad as well as on iMac?