如何使布局适合屏幕尺寸

Posted

技术标签:

【中文标题】如何使布局适合屏幕尺寸【英文标题】:How to Fit the layout to the screen size 【发布时间】:2021-06-21 21:51:38 【问题描述】:

我刚刚开始学习 Swift。

上图是我使用VStack和HStack制作的画面。

但我想将按钮或文本放在任何我想要的地方。

这张图是我用相框调整大小整理出来的。

但是,当分辨率改变时,会出现按钮或文本超出屏幕的问题。

我想保持这种安排,让它自动适用于各种 iPhone 分辨率。

VStack 
        HStack 
            Text("Hello")
                .font(.largeTitle)
                .fontWeight(.black)
                .foregroundColor(Color.black)
                .multilineTextAlignment(.center)
        
        VStack 
            HStack 
                VStack 
                    Text("ID")
                        .padding()
                    Text("PW")
                        .padding()
                
                
                VStack 
                    TextField("ID", text: $ID)
                        .padding()
                        .textFieldStyle(RoundedBorderTextFieldStyle())
                    SecureField("password", text: $password)
                        .padding()
                        .textFieldStyle(RoundedBorderTextFieldStyle())
                
            
            
        
        VStack 
            Button(action: /*@START_MENU_TOKEN@*//*@PLACEHOLDER=Action@*//*@END_MENU_TOKEN@*/) 
                Text("Login")
                    .font(.title)
                    .fontWeight(.bold)
                    .foregroundColor(Color.white)
        
            
            .padding()
            .background(Color.green.cornerRadius(18))
            Button(action: /*@START_MENU_TOKEN@*//*@PLACEHOLDER=Action@*//*@END_MENU_TOKEN@*/) 
                Text("Sign up")
                    .font(.title)
                    .fontWeight(.bold)
                    .foregroundColor(Color.white)
            
            .padding()
            .background(Color.red.cornerRadius(18))
        
    

源码非常缺乏经验。

如果您能告诉我这是否是编写布局的正确方法,我将不胜感激。

【问题讨论】:

【参考方案1】:

使用.frame(maxWidth: .infinity)。这使得View 的大小最大化到他们的容器。

另外,在Text 上使用.background() 修饰符而不是Button

如果您像代码一样在Button 上使用.background()Button 仅适用于文本区域。

VStack 
    Button(action: /*@START_MENU_TOKEN@*//*@PLACEHOLDER=Action@*//*@END_MENU_TOKEN@*/) 
        Text("Login")
            .font(.title)
            .fontWeight(.bold)
            .frame(maxWidth: .infinity, alignment: .center)
            .foregroundColor(Color.white)
            .background(Color.green.cornerRadius(18)) 
    
    .padding()

    Button(action: /*@START_MENU_TOKEN@*//*@PLACEHOLDER=Action@*//*@END_MENU_TOKEN@*/) 
        Text("Sign up")
            .font(.title)
            .fontWeight(.bold)
            .frame(maxWidth: .infinity, alignment: .center)
            .foregroundColor(Color.white)
            .background(Color.red.cornerRadius(18))
    
    .padding()

【讨论】:

以上是关于如何使布局适合屏幕尺寸的主要内容,如果未能解决你的问题,请参考以下文章

xcode ios - 如何使图像适合不同的屏幕尺寸

如何根据屏幕尺寸使这种角度弯曲布局全高?

只有一种布局设计,适合 iPhone 纵向模式下的所有屏幕尺寸

CSS 表格列宽不适合某些屏幕尺寸

使游戏响应(适合不同的屏幕尺寸)

使用 React 使 Web 应用程序完全适合屏幕