所以我试着在scrollView中显示一堆文本,但在没有显示的情况下显示到底部(它们的大小和tableView行一样).

这是我的代码:

struct TestView: View {
@ObservedObject var viewModel: ViewModel
@State private var contentSize: CGSize = .zero

var body: some View {
    ZStack {
        ScrollView {
            VStack {
                Image(viewModel.image).resizable()
                    .scaledToFit()
                    .overlay(
                        Button(action: {
                            print(">> Trash Tapped")
                            //viewModel.dismiss
                        }) {
                            Image("closeBtn")
                        }.padding(.top, 30)
                            .padding(.trailing, 16),
                        alignment: .topTrailing
                        
                    )
                    .padding(.bottom, 40)
                
                Text(viewModel.firstText)
                    .padding(.trailing, 30)
                    .padding(.leading, 30)
                    .padding(.bottom, 40)
                    .multilineTextAlignment(.trailing)
                    .font(viewModel.firstFont)
                    .foregroundColor(viewModel.firstColor)
                    .lineLimit(nil)
                Text(viewModel.secondText)
                    .padding(.trailing, 30)
                    .padding(.leading, 30)
                    .padding(.bottom, 5)
                    .multilineTextAlignment(.trailing)
                    .font(viewModel.secondFont)
                    .foregroundColor(viewModel.secondColor)
                    .lineLimit(nil)
                Text(viewModel.thirdText)
                    .padding(.trailing, 30)
                    .padding(.leading, 30)
                    .padding(.bottom, 40)
                    .multilineTextAlignment(.trailing)
                    .font(viewModel.thirdFont)
                    .foregroundColor(viewModel.thirdColor)
                    .lineLimit(nil)
                
                Text(viewModel.fourthText)
                    .padding(.trailing, 30)
                    .padding(.leading, 30)
                    .padding(.bottom, 5)
                    .multilineTextAlignment(.trailing)
                    .font(viewModel.fourthFont)
                    .foregroundColor(viewModel.fourthColor)
                    .lineLimit(nil)
                
                Text(viewModel.fifthText)
                    .padding(.trailing, 30)
                    .padding(.leading, 30)
                    .padding(.bottom, 40)
                    .multilineTextAlignment(.trailing)
                    .font(viewModel.fifthFont)
                    .foregroundColor(viewModel.fifthColor)
                    .lineLimit(nil)

                Text(viewModel.sixText)
                    .padding(.trailing, 22)
                    .padding(.leading, 22)
                    .padding(.bottom, 30)
                    .multilineTextAlignment(.trailing)
                    .font(viewModel.sixFont)
                    .foregroundColor(viewModel.sixColor)
                    .lineLimit(nil)
                Text(viewModel.sixText)
                    .padding(.trailing, 22)
                    .padding(.leading, 22)
                    .padding(.bottom, 30)
                    .multilineTextAlignment(.trailing)
                    .font(viewModel.sixFont)
                    .foregroundColor(viewModel.sixColor)
                    .lineLimit(nil)
            }
            Spacer()
        }
        .edgesIgnoringSafeArea(.all)
    }
    .navigationBarHidden(true)
}
}

这是我的虚拟机:

final class ViewModel: ObservableObject, CryptoPopUpScreen {
var firstFont: Font
var firstColor: Color
var secondFont: Font
var secondColor: Color
var thirdFont: Font
var thirdColor: Color
var fourthFont: Font
var fourthColor: Color
var fifthFont: Font
var fifthColor: Color
var sixFont: Font
var sixColor: Color
var firstText: String
var secondText: String
var thirdText: String
var fourthText: String
var fifthText: String
var sixText: String

lazy var image = "cryptoPilot"
init() {
    
    firstText = L10n.cryptoPilotTitle
    firstColor = Color(ColorName.black)
    firstFont = Font(UIFont(name: "Orion-Regular", size: 14)!)
    
    secondText = L10n.cryptoPilotFirstTextTitle
    secondColor = Color(ColorName.black)
    secondFont = Font(UIFont(name: "Orion-Bold", size: 14)!)
    
    thirdText = L10n.cryptoPilotFirstText
    thirdColor = Color(ColorName.black)
    thirdFont = Font(UIFont(name: "Orion-Regular", size: 14)!)
    
    fourthText = L10n.cryptoPilotSecondTextTitle
    fourthColor = Color(ColorName.black)
    fourthFont = Font(UIFont(name: "Orion-Bold", size: 14)!)
    
    fifthText = L10n.cryptoPilotSecondText
    fifthColor = Color(ColorName.black)
    fifthFont = Font(UIFont(name: "Orion-Regular", size: 14)!)
    
    sixText = L10n.cryptoPilotInfo
    sixColor = Color(ColorName.mushroom)
    sixFont = Font(UIFont(name: "Orion-Regular", size: 1)!)
    
}

enter image description here

enter image description here

在这些图像中,我们可以看到文本的高度与它假设的高度不同.

在一个辅助项目中,我设法做到了正确.

推荐答案

首先,如果你有很多重复修饰符,那么为自己创建一个自定义修饰符并使用它是值得的,参见参考文献https://www.hackingwithswift.com/books/ios-swiftui/custom-modifiers

其次,对于sixFont,您已将大小设置为1,所以我认为这将是您的问题?

最后,由于您忽略了所有边缘上的安全插入,是否可能因为它们被推出视图而没有显示?尽量不要忽略底部插图.

Ios相关问答推荐

UIImage大小调整工作,但转换为上传数据时恢复到原始大小

如何在PINCH上添加UITextfield以zoom 图像

如何在SwiftUI中基于嵌套视图中的状态动态显示外部视图的内容?

Swift-如何通过Case Let访问模型变量

如何删除点击时按钮的不透明动画?

如果使用 .onAppear 设置,为什么 SwiftUI Picker 不显示正确的选定值

更新 flutter 和 xcode 后 Xcode 14.3 中缺少文件 (libarclite_iphoneos.a)

SKScene 的更新功能似乎不起作用

应用程序被杀死时如何在 flutter ios 应用程序中播放音频?

将 URLCache 子类与 URLSession 一起使用

在 Swift 中使用 UITesting 捕获屏幕录像

以正确的方式在 Text() 中使用 colored颜色

SwiftUI 我自己的渲染函数的返回类型是什么?

在 UITextView 中垂直居中文本

通过 segue 传递数据

如何在 Swift 中使用包含多个值的查询参数构建一个 URL?

在 Swift 中禁用向后滑动手势

SLComposeViewController 分享教程

如何为 NSDate 添加一个月?

iOS 7 应用程序图标、启动图像和命名约定,同时保留 iOS 6 图标