我正在使用 UIImagePickerController 从相机捕获照片或从照片库中选择,然后显示图像。这适用于横向/水平方向的照片,但纵向/垂直方向的照片显示为水平拉伸。
我试过 .scaledToFit() 和 .aspectRatio(contentMode: .fit),但它仍然显示拉伸。很感谢任何形式的帮助。
显示图片的代码:
struct AddNewItem: View {
@State private var showImagePicker: Bool = true
@State private var image: UIImage = nil
@State var showCamera: Bool = false
@State private var showImageEditor: Bool = false
var body: some View {
VStack {
Image(uiImage: image ?? UIImage(named: "placeholder")!)
.resizable()
.scaledToFit()
.aspectRatio(contentMode: .fit)
}
//Show the photo capture view
.sheet(isPresented: self.$showImagePicker) {
PhotoCaptureView(showImagePicker: self.$showImagePicker, image: self.$image, showImageEditor: self.$showImageEditor, showCamera: self.$showCamera)
}
}
Run Code Online (Sandbox Code Playgroud)
}
图像选择器协调员:
class ImagePickerCoordinator: …Run Code Online (Sandbox Code Playgroud) 我们的 iOS 应用程序有一个自定义包,其中包含一个资产目录(.car 文件)。这是自 iOS 9 以来的设置。直到现在,在 Xcode 11 上使用 iOS 13 获取图像资源并使用它们一直不是问题(不确定当应用程序使用 xcode 10 构建并在 iOS 13 上运行时它是否有效)。
使用以下代码获取包:
let bundlePath = Bundle.main.path(forResource: "TheResource", ofType: "bundle")!
var bundle = Bundle(path: bundlePath)
现在,当我打印这个bundle变量时,我得到以下信息:
(lldb) po bundle
? Optional<NSBundle>
- some : NSBundle </Users/xyz/Library/Developer/CoreSimulator/Devices/SE8C7E9D-76AF-4564-B21B-78DC990F3D2E/data/Containers/Bundle/Application/PD422A04-B4C8-42F0-A5CB-9465AC70D3A2/abc.app/TheResource.bundle> (not yet loaded)
Run Code Online (Sandbox Code Playgroud)
(lldb) po bundle.loadAndReturnError()
Error Domain=NSCocoaErrorDomain Code=4 "The bundle “TheResource” couldn’t be loaded because its executable couldn’t be located." UserInfo={NSLocalizedFailureReason=The bundle’s executable couldn’t be located., NSLocalizedRecoverySuggestion=Try reinstalling the bundle., NSBundlePath=/Users/xyz/Library/Developer/CoreSimulator/Devices/SE8C7E9D-76AF-4564-B21B-78DC990F3D2E/data/Containers/Bundle/Application/PD422A04-B4C8-42F0-A5CB-9465AC70D3A2/abc.app/TheResource.bundle, NSLocalizedDescription=The bundle …Run Code Online (Sandbox Code Playgroud) 我无法在 Mac 上的 Mac-Catalyst 应用程序中从钥匙串写入/读取,它分别返回错误 34018 和 25300。有没有办法让 Keychain 在 Mac 上的 Catalyst 应用程序中工作?
Xcode:11.0,MacOS:10.15
这是一个示例代码,它适用于 iOS,但不适用于 Mac。该代码打印“My secretive bee”以表明我们已成功将此文本写入 Keychain 并从中读取。
override func viewDidLoad() {
super.viewDidLoad()
let itemKey = "My key"
let itemValue = "My secretive bee "
deleteFromKeychain(itemKey: itemKey)
addToKeychain(itemKey: itemKey, itemValue: itemValue)
readFromKeychain(itemKey: itemKey)
}
func deleteFromKeychain(itemKey: String) {
let queryDelete: [String: AnyObject] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrAccount as String: itemKey as AnyObject,
]
let resultCodeDelete = SecItemDelete(queryDelete as CFDictionary)
if resultCodeDelete != noErr { …Run Code Online (Sandbox Code Playgroud) 带有 iOS 13 的 Xcode 11 现在以与之前略有不同的设置启动,将 AppDelegate.m 文件中的许多功能移动到名为 SceneDelegate.m 的新文件中 - 删除 Main.storyboard 并在 AppDelegate 中设置根视图控制器不再是选项,导致以下错误:
-[AppDelegate window]: unrecognized selector sent to instance
Run Code Online (Sandbox Code Playgroud)
如何在没有故事板的情况下继续构建新项目?
当您为 Mac 应用程序或其他 iOS 编译 Xcode 时,您可能会看到以下错误
签署“gRPC-C++-gRPCCertificates-Cpp”需要一个开发团队。在 Signing & Capabilities 编辑器中选择一个开发团队。
我的 Xcode 版本:11.2.1 Mac OS:10.15.1
从 Xcode 11 开始,约束的 IB [Interface Builder] UI 被分为垂直和水平类别,而不是像以前那样,当子视图之间的约束在一个单独的组中,而视图与其他兄弟或父视图之间的约束在一个单独的组中时.
Xcode 11:
Xcode 10 及更早版本:
这对我来说非常难以导航,尤其是在非常复杂的约束层次结构中,尤其是当并非所有视图都具有与其关联的可识别名称时。您最终会看到视图 -> 视图,而实际上这是与孩子的关系,在我正在解决的大多数情况下,这并不重要。
是否可以将 Xcode 11 IB UI 恢复为与 Xcode 10 中相同的方式?
xcode user-experience interface-builder nslayoutconstraint xcode11
我已经下载了最新的 Xcode 11.2.1。当我构建时,我收到此错误。
<unknown>:0: 错误:不支持使用带有模块接口的桥接头命令 CompileSwiftSources 失败,退出代码非零
我该如何解决这个问题?
我需要在运行在 iOS 8+ 上的 iOS 应用程序中实现暗模式。此外,我在颜色资产中定义了自定义颜色,其中包含用于浅色和深色外观的 RGB 代码。
问题是 iOS 11 之前不支持命名颜色,但我只能使用命名颜色来支持两种外观 - 深色和浅色。
有没有办法实现向后兼容?
我有一个框架和库的现有项目,并希望他们使用 Swift 包管理器。
我有一个 Xcode 11 并且已经阅读了Creating a Swift Package with Xcode。
将 Package.swift 添加到项目和应用程序目标后
import PackageDescription
let package = Package(
name: "MyLibrary",
platforms: [
.macOS(.v10_13),
],
products: [
.library(name: "MyLibrary", targets: ["MyLibrary"]),
],
dependencies: [
.package(url: "https://url/of/another/package/named/Utility", from: "1.0.0"),
],
targets: [
.target(name: "MyLibrary", dependencies: ["Utility"]),
.testTarget(name: "MyLibraryTests", dependencies: ["MyLibrary"]),
]
)
Run Code Online (Sandbox Code Playgroud)
我收到一个错误
没有这样的模块“PackageDescription”
如何导入PackageDescription模块?
我有一个 SwiftUI 应用程序,它将有一个浮动的播客播放器,类似于位于选项卡栏上方的 Apple Music 播放器,并在播放器运行时保留在所有选项卡和视图中。我还没有想出一个很好的方法来定位播放器,使其与标签栏齐平,因为标签栏的高度会根据设备而变化。我发现的主要问题是我必须如何将播放器放置在应用程序根视图中的叠加层或 ZStack 中,而不是在 TabView 本身中。由于我们无法自定义 TabView 布局的视图层次结构,因此无法在 TabBar 本身与其上方视图的内容之间注入视图。我的基本代码结构:
TabView(selection: $appState.selectedTab){
Home()
.tabItem {
VStack {
Image(systemName: "house")
Text("Home")
}
}
...
}.overlay(
VStack {
if(audioPlayer.isShowing) {
Spacer()
PlayerContainerView(player: audioPlayer.player)
.padding(.bottom, 58)
.transition(.moveAndFade)
}
})
Run Code Online (Sandbox Code Playgroud)
这里的主要问题是 PlayerContainerView 的位置是硬编码的,填充为 58,以便清除 TabView。如果我可以检测到 TabView 的实际帧高度,我可以为给定的设备全局调整它,我会没事的。有人知道如何可靠地做到这一点吗?或者您知道我如何将 PlayerContainerView 放置在 TabView 本身中,以便在切换显示时它只会出现在 Home() 视图和 Tab Bar 之间?对于任何反馈,我们都表示感谢。