gpt4 book ai didi

ios - 为什么 SwiftUI 教程中没有显示 Image 对象?

转载 作者:行者123 更新时间:2023-12-01 19:30:00 26 4
gpt4 key购买 nike

我一直在尝试将布局更改为 Apple 提供的用于为 watch 制作 SwiftUI 应用程序 (https://developer.apple.com/tutorials/swiftui/creating-a-watchos-app) 的 WatchLandmarks 教程,但我无法弄清楚为什么没有为我加载图像。它在已完成的教程代码中运行良好,唯一的区别在于我对 LandmarkList 和 LandmarkRow 布局的更改。
对地标列表的更改:

struct LandmarkList<DetailView: View>: View {
@EnvironmentObject private var userData: UserData

let detailViewProducer: (Landmark) -> DetailView

var body: some View {
VStack(alignment: .leading){
Text(" Landmarks")
.font(.system(size: 16))
ScrollView(.horizontal, showsIndicators:false){
HStack(alignment: .center){
ForEach(userData.landmarks) { landmark in
// if !self.userData.showFavoritesOnly || landmark.isFavorite {
NavigationLink(
destination: self.detailViewProducer(landmark).environmentObject(self.userData)) {
LandmarkRow(landmark: landmark)
.frame( maxWidth: 70, maxHeight: 70, alignment: .leading)
}
// }
}
}

}.frame(minWidth: 0, maxWidth: .infinity, maxHeight: 100, alignment: .center)//.frame(width:150, height: 100)
Text(self.userData.landmarks[0].name)
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 24, alignment: .center)
HStack(spacing: 32){
Button(action: { print("first button") }) {
Text("P")
}.frame(minWidth: 20, maxWidth:50, minHeight: 20, maxHeight:50)
.background(Color.orange)
.clipShape(Circle())
.overlay(Circle().stroke(Color.clear, lineWidth: 4))
.shadow(radius: 10)
Button(action: { print("second button") }) {
Text("S")
}.frame(minWidth: 20, maxWidth:50, minHeight: 20, maxHeight:50)
.background(Color.orange)
.clipShape(Circle())
.overlay(Circle().stroke(Color.clear, lineWidth: 4))
.shadow(radius: 10)
}.frame(minWidth: 0, maxWidth: .infinity, maxHeight: 100, alignment: .center)
// List {
// Toggle(isOn: $userData.showFavoritesOnly) {
// Text("Show Favorites Only")
// }
//
// ForEach(userData.landmarks) { landmark in
// if !self.userData.showFavoritesOnly || landmark.isFavorite {
// NavigationLink(
// destination: self.detailViewProducer(landmark).environmentObject(self.userData)) {
// LandmarkRow(landmark: landmark)
// }
// }
// }
// }
// .navigationBarTitle(Text("Landmarks"))
}.frame(maxWidth: .infinity, minHeight:200, maxHeight: .infinity, alignment: .leading)
}
}
对 LandmarkRow 的更改
struct LandmarkRow: View {
var landmark: Landmark

var body: some View {
HStack {
landmark.image
.resizable()
.frame(width: 50, height: 50)
.cornerRadius(8.0)
// Text(landmark.name)
// Spacer()
//
// if landmark.isFavorite {
// Image(systemName: "star.fill")
// .imageScale(.medium)
// .foregroundColor(.yellow)
// }
}
}
}
我究竟做错了什么?

最佳答案

尝试调用.renderingMode(.original)在图像上。
您的图像 Assets 有两种类型的渲染模式:

  • 原创
  • 模板

  • 原始模式将按原样描绘图像 Assets ,而模板模式会将图像的所有非透明部分转换为您可以设置的一种颜色。默认颜色为黑色。
    注意:Apple 文档中没有可用的概述。
    在本教程中,您将了解 SwiftUI 中的渲染模式是什么以及如何使用它。

    关于ios - 为什么 SwiftUI 教程中没有显示 Image 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63510475/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com