gpt4 book ai didi

compiler-errors - 如何将Swift UI代码中的表达式分解为不同的子表达式?

转载 作者:行者123 更新时间:2023-12-02 10:47:20 24 4
gpt4 key购买 nike

如何将我的代码分组以解决错误,

"The compiler is unable to type-check this expression in reasonabletime; try breaking up the expression into distinct sub-expressions"


我已经尝试了所有其他方法来解决堆栈溢出问题,但是它们只会在我的代码中引起更多错误。注意-此页面的目的是显示不同位置上的信息,并在选择位置时为英雄 View ( pop View )提供更多信息。
这是我的代码...
struct MainView : View {

@State var topIndex = 0
@State var index = 0
@State var show = false
@State var selectedIndex = 0
// hero Animation....
@Namespace var name

var body: some View{

ZStack {
Image("background1")
.resizable()
.scaledToFill()
.edgesIgnoringSafeArea(.all)


ZStack{

VStack(spacing: 0){

// tab view with tabs....

// change tabs based on index...

// Scroll View For Smaller Size Phones....

ScrollView(UIScreen.main.bounds.height < 750 ? .vertical : .init(), showsIndicators: false) {

VStack{


ScrollView(.horizontal, showsIndicators: false) {

HStack(spacing: 30){

}
}
.padding(.horizontal)
}
.padding(.top,60)

// Vertical Menu...

HStack{

VerticalMenu()
// moving view to left...
.padding(.leading,-165)
.zIndex(1)
// moving view in stack for click event...

// Scroll view....

ScrollView(.horizontal, showsIndicators: false) {

HStack(spacing: 15){

ForEach(landmarkData, id: \.id) { landmark in

ZStack(alignment: Alignment(horizontal: .center, vertical: .top)){

VStack(alignment: .leading){

Image(landmark.image)
.resizable()
.aspectRatio(contentMode: .fit)
// rotaing image....
.matchedGeometryEffect(id: landmark.image, in: name)

Spacer(minLength: 0)

Text(landmark.name)
.font(.system(size: 22))
.fontWeight(.bold)
.foregroundColor(.black)

Spacer(minLength: 0)

Text(landmark.category)
.foregroundColor(Color.white.opacity(0.6))

Text(landmark.park)
.font(.system(size: 22))
.fontWeight(.bold)
.foregroundColor(.black)
}

VStack(alignment: .leading){

Image(landmark.image)
.resizable()
.aspectRatio(contentMode: .fit)
// rotaing image....
.matchedGeometryEffect(id: landmark.image, in: name)

Spacer(minLength: 0)

Text(landmark.name)
.font(.system(size: 22))
.fontWeight(.bold)
.foregroundColor(.black)

Spacer(minLength: 0)

Text(landmark.category)
.foregroundColor(Color.white.opacity(0.6))

Text(landmark.city)
.font(.system(size: 22))
.fontWeight(.bold)
.foregroundColor(.black)
}
}
.padding(.horizontal)
.padding(.vertical)
// fixed Frame...
.frame(width: UIScreen.main.bounds.width - 150, height: 360)
.background(Color(.white))
// opening hero animation...
.onTapGesture {

withAnimation(.spring()){

selectedIndex = i
show.toggle()
}
}
}
}
.padding(.leading,20)
.padding(.trailing)
}
.padding(.leading,-165)
}
// fixed height...
.padding(.top,30)
.frame(height: 400)
// when view is rotated width is converted to height,...


.padding(.top,25)
.padding(.horizontal)

// Menu...

}
.padding(.top,20)
.padding(.horizontal)

Spacer(minLength: 0)


}
// since all edges are ignored....
.padding(.top,UIApplication.shared.windows.first?.safeAreaInsets.top)
.padding(.bottom)
}



// Hero View....

if show{

VStack{

VStack{

HStack{

Button(action: {}) {

Image(systemName: "suit.heart")
.font(.system(size: 22))
.foregroundColor(.white)
}

Spacer()

Button(action: {

// closing hero view...

withAnimation(.spring()){

show.toggle()
}

}) {

Image(systemName: "xmark")
.font(.system(size: 22))
.foregroundColor(.white)
}
}

Image(landmark.image)
.resizable()
.aspectRatio(contentMode: .fit)
.frame(height: 250)
.matchedGeometryEffect(id: landmark.image, in: name)
.rotationEffect(.init(degrees: 12))
.padding(.horizontal)
}
.padding()
.padding(.top,UIApplication.shared.windows.first?.safeAreaInsets.top)
.background(Color(.white))

ScrollView(UIScreen.main.bounds.height < 750 ? .vertical : .init(), showsIndicators: false) {

HStack{

VStack(alignment: .leading, spacing: 10) {

Text(landmark.category)
.foregroundColor(.gray)

Text(landmark.park)
.font(.system(size: 22))
.fontWeight(.bold)
.foregroundColor(.black)
}

Spacer()

Text(landmark.state)
.font(.system(size: 22))
.fontWeight(.bold)
.foregroundColor(.black)
}
.padding()

Text(landmark.imageName)
.foregroundColor(.black)
.padding(.top,20)
.padding(.horizontal)


Spacer(minLength: 0)

Spacer(minLength: 0)

// Button...

Button(action: {}) {

Text("View on Live Map")
.fontWeight(.bold)
.padding(.vertical)
.foregroundColor(.white)
.frame(width: UIScreen.main.bounds.width - 100)
.background(Color.black)
.clipShape(Capsule())
}
.padding(.bottom,40)
.padding(.top)
}

}
.background(Color.white)
}
}
}

}

最佳答案

您应该将该巨大块中的每个逻辑子部分移到单独的 View 中。例如,整个水平滚动 View 可以分开并命名为HeaderView,因此,代替了

VStack{
ScrollView(.horizontal, showsIndicators: false) {
HStack(spacing: 30){
// ... other code
}
}
.padding(.horizontal)
}
.padding(.top,60)
你有
    VStack{
HeaderView()
// other code
struct HeaderView: View {
var body: some View {
ScrollView(.horizontal, showsIndicators: false) {

HStack(spacing: 30){

}
}
.padding(.horizontal)
}
.padding(.top,60)
}
}
并以此方式尽可能地打破和合并。

关于compiler-errors - 如何将Swift UI代码中的表达式分解为不同的子表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63716033/

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