如何在SwiftUI中为图片设置固定大小?目前我的图片真的很大
目前,我具有以下结构:
struct TweetCell: View {
var profileImage: Image
var body: some View {
HStack {
profileImage
VStack {
...
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用SwiftUI显示地图,如果用户点击了注释,它将在VStack中弹出详细视图。我已经制作了地图视图,并在另一个SwiftUI文件中插入了注释。我还做了详细视图。
如何在主视图文件中访问该地图的注释,以定义一个.tapaction,以便他们将其用于详细视图?
我尝试将视图定义为MKMapView,但无法在另一个SwiftUI视图中为UIViewRepresentable做到这一点。
主视图(ContentView)代码为:
struct ContentView: View {
@State private var chosen = false
var body: some View {
VStack {
MapView()
.edgesIgnoringSafeArea(.top)
.frame(height: chosen ? 600:nil)
.tapAction {
withAnimation{ self.chosen.toggle()}
}
if chosen {
ExtractedView()
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
MapView代码为:
struct MapView : UIViewRepresentable {
@State private var userLocationIsEnabled = false
var locationManager = CLLocationManager()
func makeUIView(context: Context) -> MKMapView {
MKMapView(frame: .zero)
}
func updateUIView(_ view: MKMapView, context: Context) {
view.showsUserLocation = true
.
.
.
let sampleCoordinates …Run Code Online (Sandbox Code Playgroud) So I want to edit some files in a swift package in Xcode 11.0 beta (11M336w) on MacOS 10.15 Beta (19A471t).
Let's take https://github.com/AndyQ/NFCPassportReader as an example.
It has an example app which uses the repo from GitHub. Suppose I want to make some source code changes. How do I tell the system I want to edit the package?
I tried "swift package edit NFCPassportReader" on the command line.
If I run it from the example app's root …
我正在将SwiftUI与Xcode 11结合使用,我想NavigationBarTitle用以下代码行更改字体:
.navigationBarTitle (Text("Navigation Bar Title"), displayMode: .inline)
.font(.subheadline)
Run Code Online (Sandbox Code Playgroud)
但是什么也没发生。有什么建议或意见吗?
使用最新的Xcode 11归档时,我收到大量的Swift错误。调试中的构建工作正常,问题仅在归档时。
错误示例-> 未定义符号:Swift的方法描述符。
我收到此错误消息:“编译器无法在合理的时间内对这个表达式进行类型检查;每次尝试构建我的应用程序时,都尝试将表达式分解为不同的子表达式,并且每次构建错误时,都会在不同的视图和代码的不同部分。通常,它显示了我有ForEach或.sheet演示文稿的位置,但是有包含它们的视图,并且它们不会给出错误。这仅在我更新到xCode 11 beta 5时才发生,有人有同样的错误吗?
已经尝试替换视图上的ForEach和.sheet,但是有些视图具有ForEach,并且它们没有给出错误且它们完全相同。
预期的结果在编译时不会出现该错误,但是由于某种原因,它始终显示:'编译器无法在合理的时间中对该表达式进行类型检查;尝试将表达式分解为不同的子表达式
我的代码中有一个按钮,并且有一个名为LogindView.swift的文件
单击按钮时,我无法获取打开另一个视图文件的代码。
谁能给我一个例子。
在我的按钮操作中,我尝试编写LogindView(),但我只是警告我。“'LogindView'初始化程序的结果未使用”
Button(action: {
// Do action
LogindView()
}, label: {
//** Label text
Text("Logind")
.font(.headline)
.padding(.all)
.foregroundColor(Color.white)
})
.background(Color.blue)
Run Code Online (Sandbox Code Playgroud) 我试图实现一个视图,如果内容数组的大小发生变化,该视图可以更改显示项的数量(由ForEach循环创建),就像购物应用程序在用户拉动刷新后如何更改其可用项数一样
这是到目前为止我尝试过的一些代码。如果我没记错的话,这些可以使用Xcode beta 4,但是可以使用beta 5:
码:
import SwiftUI
struct test : View {
@State var array:[String] = []
@State var label = "not pressed"
var body: some View {
VStack{
Text(label).onTapGesture {
self.array.append("ForEach refreshed")
self.label = "pressed"
}
ForEach(0..<array.count){number in
Text(self.array[number])
}
}
}
}
#if DEBUG
struct test_Previews: PreviewProvider {
static var previews: some View {
test()
}
}
#endif
Run Code Online (Sandbox Code Playgroud)
我通常是SwiftUI和GUI编程的新手,只是感觉每个内容都是在启动时定义的,因此之后真的很难进行更改(例如:在用户导航离开并返回视图后重置视图)。对于循环问题的解决方案或使视图更具动态性的任何提示将不胜感激!
我正在使用CallKit和PushKit在Swift中开发软电话。在iOS 13之前,VoIP通知运行良好。但是,在iOS 13更新之后,我的应用程序在后台运行时没有收到VoIP推送通知。在前台didReceiveIncomingPushWith被调用,但在后台不被调用。
如何解决此问题?
码
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
print("\(#function)")
let voipPushResgistry = PKPushRegistry(queue: nil)
voipPushResgistry.delegate = self
voipPushResgistry.desiredPushTypes = [PKPushType.voIP]
return true
}
func pushRegistry(_ registry: PKPushRegistry, didInvalidatePushTokenFor type: PKPushType) {
print("\(#function) token invalidated")
}
func pushRegistry(_ registry: PKPushRegistry, didUpdate credentials: PKPushCredentials, for type: PKPushType) {
let deviceToken = credentials.token.reduce("", {$0 + String(format: "%02X", $1) })
print("\(#function) token is: \(deviceToken)")
}
func …Run Code Online (Sandbox Code Playgroud) 我试图在Mac上使用VSCode开发的C代码上使断点起作用。
我的代码似乎可以编译并运行良好(由于vscode BTW 上没有'openssl / crypto.h'文件),但是我没有得到任何断点,甚至在开始使用"stopAtEntry": true或附加到正在运行的进程时也没有。
我的tasks.json和launch.json非常标准:
{
"tasks": [
{
"type": "shell",
"label": "clang build active file",
"command": "/usr/bin/clang",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}",
"-I/usr/local/opt/openssl/include",
"-L/usr/local/opt/openssl/lib",
"-lssl",
"-lcrypto"
],
"options": {
"cwd": "/usr/bin"
}
}
],
"version": "2.0.0"
}
Run Code Online (Sandbox Code Playgroud)
和:
{
"version": "0.2.0",
"configurations": [
{
"name": "(lldb) Attach",
"type": "cppdbg",
"request": "attach",
"program": "${workspaceFolder}/test2",
"processId": "${command:pickProcess}",
"MIMode": "lldb"
},
{
"name": "clang build and debug active file",
"type": …Run Code Online (Sandbox Code Playgroud)