Hard to believe something this old doesn't work, but it appears so. I set the top to 10 and the bottom to 0, but it uses 10 for both.
Am I doing something wrong, or is it a bug?
sv.edgeInsets = .init(top: 10, left: 10, bottom: 0, right: 0)
Screenshot:
Full code example below.
(This is the ViewController.swift file after creating a new Xcode project with "Interface" of "Storyboard". No other changes to the project template.)
class ViewController: NSViewController {
override func viewDidLoad() {
super.viewDidLoad()
let sv = NSStackView()
sv.translatesAutoresizingMaskIntoConstraints = false
let v1 = ColoredBlock(.red, width: 20)
let v2 = ColoredBlock(.green, width: 20)
let v3 = ColoredBlock(.blue)
sv.addArrangedSubview(v1)
sv.addArrangedSubview(v2)
sv.addArrangedSubview(v3)
sv.spacing = 0
sv.edgeInsets = .init(top: 10, left: 10, bottom: 0, right: 0)
// sv.setContentHuggingPriority(.required, for: .vertical)
view.addSubview(sv)
pinToFourEdges(view, sv)
}
}
class ColoredBlock: NSView {
let intrinsicHeight: CGFloat
let intrinsicWidth: CGFloat
init(_ color: NSColor, width: CGFloat = NSView.noIntrinsicMetric, height: CGFloat = NSView.noIntrinsicMetric) {
intrinsicWidth = width
intrinsicHeight = height
super.init(frame: .zero)
self.wantsLayer = true
if let layer = self.layer {
layer.backgroundColor = color.cgColor
}
}
required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") }
override var intrinsicContentSize: NSSize {
return NSSize(width: intrinsicWidth, height: intrinsicHeight)
}
}
public func pinToFourEdges(_ view1: NSView, _ view2: NSView) {
view1.topAnchor.constraint(equalTo: view2.topAnchor).isActive = true
view1.bottomAnchor.constraint(equalTo: view2.bottomAnchor).isActive = true
view1.leftAnchor.constraint(equalTo: view2.leftAnchor).isActive = true
view1.rightAnchor.constraint(equalTo: view2.rightAnchor).isActive = true
}
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
Here's a simple demo. I run it on macOS 12.1, compiled with Xcode 13.2.
struct ContentView: View {
var body: some View {
VStack {
Text("ee")
Text("eé")
Text("e\u{E9}") // "e with acute"
Text("ee\u{301}") // "combining acute"
}.font(.custom("Avenir", fixedSize: 18))
.padding(20)
}
}
In the 4rd one, the "e" is rendered in the wrong size/font. Screenshot:
Other fonts do not have the problem. For example, "Avenir Next" and "Helvetica".
Is there a way (in code) to tell which fonts can handle combining chars?
Is this a bug?
I notice the same thing happens when I use Core Text to draw the strings at a low level. So it's not just SwiftUI.
In TextEdit, if have Avenir font, type "option-e" + "e" I get a nice letter. Maybe TextEdit is doing what Xcode did in the second line, and using the "e with acute" unicode character.
My project builds after a clean, but then fails to build. I can't understand these error messages. I have a macOS app target ("MyArchives") and a library target ("HelpPG") in the project. The app uses the library. Logically, there is no cycle.
The library is an attempt to wrap PostgreSQL's libpq with some Swift stuff. It works when it runs after the clean build.
I don't know what it's talking about with "headers before sources". That is already the case for the library target. There are no headers in the app target (which is all Swift).
For readability, strings were substituted:
[DEBUG] = /Users/me/Library/Developer/Xcode/DerivedData/MyArchives-flyvnqgqeolefjeztyopfnoaqmaj/Build/Products/Debug
[UUID1] = bb030422ec80ba11076c24bcbd7fcd674d61e6313e2915ec58f3544977cb99a4
[UUID2] = bb030422ec80ba11076c24bcbd7fcd67db6f662ae7c65be0e231d735b4905dc3
Showing All Messages
Cycle in dependencies between targets 'MyArchives' and 'HelpPG'; building could produce unreliable results. This usually can be resolved by moving the target's Headers build phase before Compile Sources.
Cycle path: MyArchives → HelpPG → MyArchives
Cycle details:
→ Target 'MyArchives' has copy command from '[DEBUG]/libHelpPG.dylib' to '[DEBUG]/MyArchives.app/Contents/Frameworks/libHelpPG.dylib'
→ Target 'HelpPG' has link command with output '[DEBUG]/libHelpPG.dylib'
○ Target 'HelpPG' has copy command from '/usr/local/pgsql/lib/libpq.5.13.dylib' to '[DEBUG]/libpq.5.13.dylib'
○ Target 'HelpPG' has link command with output '[DEBUG]/libHelpPG.dylib'
Raw dependency cycle trace:
target: ->
node: <all> ->
command: <all> ->
node: [DEBUG]/MyArchives.app/Contents/Frameworks/libHelpPG.dylib ->
command: target-MyArchives-[UUID1]-:Debug:PBXCp [DEBUG]/libHelpPG.dylib [DEBUG]/MyArchives.app/Contents/Frameworks/libHelpPG.dylib ->
node: [DEBUG]/libHelpPG.dylib/ ->
directoryTreeSignature: ~ ->
directoryContents: [DEBUG]/libHelpPG.dylib ->
node: [DEBUG]/libHelpPG.dylib ->
CYCLE POINT ->
command: target-HelpPG-[UUID2]-:Debug:Ld [DEBUG]/libHelpPG.dylib normal ->
node: [DEBUG]/libpq.5.13.dylib ->
command: target-HelpPG-[UUID2]-:Debug:PBXCp /usr/local/pgsql/lib/libpq.5.13.dylib [DEBUG]/libpq.5.13.dylib ->
node: <target-HelpPG-[UUID2]--phase1-compile-sources> ->
command: Gate target-HelpPG-[UUID2]--phase1-compile-sources ->
node: <Linked Binary [DEBUG]/libHelpPG.dylib> ->
command: target-HelpPG-[UUID2]-:Debug:Ld [DEBUG]/libHelpPG.dylib normal
I'm working on a macOS app that I want to give "Full Disk Access". When I run from Xcode, I get "permission denied" errors when reading a file in my home directory.
What can I do so that I can run and debug from Xcode?
I dragged the binary from the derived data folder to the System Preferences list for Full Disk Access, but that seems to do nothing.
I have developer documentation that contains links that are now dead. How can I find the post that this link used to refer to?
https://forums.developer.apple.com/message/281700
I tried simply using the ID in the new URL format, but that didn't work. Eg:
https://developer.apple.com/forums/thread/281700
I can't debug my metal shaders anymore. The GPU button just says this:
I have a lot of metal code so I'm not sure what triggered it. The "?" button does nothing.
Any pointers on where to look? Are there certain APIs that do this?
I watched a WWDC talk on LLDB, and they showed a nice trick of calling CATransaction.flush() from the debugger, to push changes to a UIView to the screen, even when the program was paused. Is there is a similar thing we can do with Metal?
I'm using MTKView, but I can change to a lower level if that's required. The MTKView is paused, so I'm using setNeedsDisplay. As usual, I implement the draw delegate method to encode and commit a command buffer.
If I do this from LLDB:
metalView.setNeedsDisplay()
CATransaction.flush()
I can see that causes my draw function to run, but nothing shows up on screen.
Is there something else we can do to flush those metal commands to the GPU and see them on screen while stepping through the program with the debugger?
I'm using the Connect app on my iPad. I'm looking at an app that is barely used, and I see two written reviews. But in the App Store there is only one. Any ideas what could cause this?
The review in question is reporting a possible bug, so I do wonder if this means the user retracted/deleted it.
Is this a bug? Is the < character supposed to change something in markdown? I didn't think so.
(Xcode 13.1)
Why the does this display "Hello1" and not "HelloWorld"? Then if I put a space between them it works as expected.
(macOS 12.0.1)
struct ContentView: View {
var body: some View {
let t1 = Text("Hello").foregroundColor(.red)
let t2 = Text("World").foregroundColor(.blue)
Text("\(t1)\(t2)")
.padding()
.frame(width: 200)
}
}
I'm working on a drawing and painting program. When I turn my iPad, I detect the screen change and keep the drawing stable, while allowing the toolbars and things to rotate. But SwiftUI creates a disorienting animation of the main canvas anyway. Is there a way to shut that off?
This minimal code demonstrates a problem I'm having. As you adjust the Slider (high precision numbers), the TextField sets the model, changing the number's precision to its format.
But I only want it to use the 3-digit fraction for display, or if the user edits in the field. It shouldn't be mutating the model just because it's displaying the value, no?
Is it a bug? It doesn't seem right to me.
struct ContentView: View {
@State var number: Double = 0
// wrap binding to log the `set` calls
var textFieldBinding: Binding<Double> {
Binding { number } set: {
print("Setting from TextField: \($0)")
number = $0
}
}
var sliderBinding: Binding<Double> {
Binding { number } set: {
print("Setting from Slider: \($0)")
number = $0
}
}
var body: some View {
VStack {
TextField("Number", value: textFieldBinding, format: .number.precision(.fractionLength(3)))
Slider(value: sliderBinding, in: 0...5.0)
}.frame(maxWidth: 300)
}
}
When you drag the slider, you see stuff like:
Setting from Slider: 1.0073260217905045
Setting from TextField: 1.007
...
I tried to replace UIKit's UIPinchGestureRecognizer with SwiftUI's MagnificationGesture, but it doesn't seem possible in my case. I use the location(in: UIView) function from the former, which allows me to zoom in on that point, specifically. It's a better experience when zooming in on an image.
Can I get that info from the MaginificationGesture? In the example code I see only the CGFloat for the amount of magnification.
I have a button to restore purchases in my app. It calls AppStore.sync() as suggested by sample code. I'm testing in the sandbox, I put my device in airplane mode, and it throws StoreKitError.userCancelled. That's odd. Anyone else see this?
I'd like to show an error alert popup to the user here, but I can't differentiate between this an a real userCancelled.
I've been working on an iOS app with UIDocuments. They were saving fine. Now all of a sudden, after unrelated changes, nothing will save.
Here is the error printed in Xcode console:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSURL URLByAppendingPathExtension:]: component, components, or pathExtension cannot be nil.'
log.debug("save to:\(self.document.fileURL)")
document.save(to: document.fileURL, for: .forOverwriting) { success in
...
}
The log message there prints a valid URL.