如何在SwiftUI中获取屏幕宽度?

时间:2019-08-30 12:50:54

标签: swift swiftui

我想将“图像”帧的大小调整为一个正方形,该正方形占用屏幕的相同宽度,因此高度的值(屏幕宽度)相同。

以下代码不起作用,因为它使图像具有相同的视图高度。

public class DataWrapper<T extends MyCategory> {
private T data;
private EventType type;
            // getters and setters omitted for the sake of brevity
}

4 个答案:

答案 0 :(得分:6)

尝试使用Geometry Reader

let placeholder = UIImage(systemName: "photo")! // SF Symbols

struct ContentView: View {
    var body: some View {
        GeometryReader { geometry in
            Image(uiImage: placeholder) 
            .resizable()
            .frame(width: geometry.size.width, height: geometry.size.width, alignment: .center)
            // .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .center)
            .clipped()
        }
    }
}

enter image description here

答案 1 :(得分:1)

您可以为此创建一个UIScreen扩展名。喜欢:

extension UIScreen{
   static let screenWidth = UIScreen.main.bounds.size.width
   static let screenHeight = UIScreen.main.bounds.size.height
   static let screenSize = UIScreen.main.bounds.size
}

用法

UIScreen.screenWidth

答案 2 :(得分:1)

最简单的方法是使图像可调整大小并将其纵横比设置为1:

var body: some View {
    Image("someImage")
       .resizable()
       .aspectRatio(1.0, contentMode: .fit)
}

答案 3 :(得分:-1)

您可以使用UIScreen.main.bounds .width .height

.frame(
   width:UIScreen.main.bounds.width,
   height:UIScreen.main.bounds.height
)