- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 SwiftUI 中有一个水平 ScrollView ,我想将其“动态”居中。 ScrollView 中的内容将是一个动态图表,用户可以通过改变年份来改变它的宽度(5、10、15 年图表水平增长)。
无论如何,我有两个问题:
我在水平 ScrollView 中的内容似乎是左对齐的,任何使用填充将其居中的尝试只会使其偏离居中,并且难以考虑各种屏幕尺寸。
当我尝试使用 GeometryReader 时,图表底部的“图例”被推到页面底部,Spacer() 无法修复它。
struct ChartView: View {
var body: some View {
VStack(alignment: .center) {
GeometryReader { geo in
ScrollView(.horizontal, showsIndicators: false) {
HStack {
ForEach(0..<self.chartSettings.getChartYears(), id:\.self) { index in
ColumnView()
}
}
}
.background(Color.gray)
.frame(maxHeight: geo.size.height/2)
}
//Chart Legend
HStack{
Rectangle()
.frame(width: 10, height: 10)
.foregroundColor(Color.init(#colorLiteral(red: 0.4666666687, green: 0.7647058964, blue: 0.2666666806, alpha: 1)))
Text("First Value")
.font(.system(size: 12))
Rectangle()
.frame(width: 10, height: 10)
.foregroundColor(Color.init(#colorLiteral(red: 0.2263821661, green: 0.4659538441, blue: 0.08977641062, alpha: 1)))
Text("Second Value")
.font(.system(size: 12))
}
}
}
}
左 是当前代码的样子,右 是我希望的样子,无论屏幕尺寸/iPhone 型号如何。
注意这就是我使用 ScrollView 的原因:
<iframe src='https://gfycat.com/ifr/DeficientNiceInchworm' frameborder='0' scrolling='no' allowfullscreen width='400' height='210'></iframe>
最佳答案
将 GeometryReader
移到 VStack
之外:
struct ChartView: View {
var body: some View {
GeometryReader { geo in
VStack(alignment: .center) {
ScrollView(.horizontal, showsIndicators: false) {
HStack {
ForEach(0..<self.chartSettings.getChartYears(), id:\.self) { index in
ColumnView()
}
}
}
.background(Color.gray)
.frame(maxHeight: geo.size.height/2)
//Chart Legend
HStack{
Rectangle()
.frame(width: 10, height: 10)
.foregroundColor(Color.init(#colorLiteral(red: 0.4666666687, green: 0.7647058964, blue: 0.2666666806, alpha: 1)))
Text("First Value")
.font(.system(size: 12))
Rectangle()
.frame(width: 10, height: 10)
.foregroundColor(Color.init(#colorLiteral(red: 0.2263821661, green: 0.4659538441, blue: 0.08977641062, alpha: 1)))
Text("Second Value")
.font(.system(size: 12))
}
}
}
}
}
注意:水平 ScrollView 内容总是从左边开始(不是对齐方式)。如果你只想在屏幕上居中 HStack
- 删除 ScrollView
。
关于ios - SwiftUI ScrollView 不会将内容与 GeometryReader 居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63035997/
我想将 Web 应用程序转换为 iOS 应用程序,但我正在为对齐和 GeometryReader() 苦苦挣扎。 这是我原来的网络应用程序模板的截图: 这是我在 SwiftUI 中的当前版本: 使用相
我正在尝试做一些在我脑海中非常直接的事情。 我想要一个 VStack 的 subview 根据其内容动态更改其高度(下面示例中的 ProblematicView)。 它通常工作得很好,但在这种情况下,
我正在使用 GeometryReader确保图像永远不会超过屏幕宽度的一半。然而,它把我的其余观点搞乱了 GeometryReader请求 View 的完整高度/宽度(如带有绿色 BG 的图像所示)。
我有一个自定义 View : struct ImageContent: View { var body: some View { Image("smile")
你好吗? 请考虑以下代码: struct ContentView: View { var body: some View { NavigationView { G
我的布局基本上如下所示: ZStack(alignment: .bottom) { GeometryReader { geometry in ZStack {
下面的代码是创建一个自定义按钮 import SwiftUI let skyBlue = Color(red: 75/255, green: 170/255, blue: 193/255) struc
对于: struct ContentView: View { var body: some View { NavigationView {
我想知道 GeometryReader 是如何隐藏的,我有兴趣为学习目的构建一个自定义 GeometryReader! 坦率地说,我认为我们在 body 中使用的每个 View 都是一种 Geomet
我想在 VStack 之外使用 ScrollView,这样当 VStack 超出屏幕尺寸时我的内容可以滚动。现在我想在 VStack 中使用 GeometryReader,它会导致问题,我只能通过设置
我有一个固定宽度和高度的主 View ,因为这个 View 将被转换为 PDF。接下来,我有一组 subview ,它们将垂直堆叠在主 View 中。可能有更多的 subview 可以容纳在主 Vie
我正在构建一个带有卡片的网格,顶部有一个 ImageView ,底部有一些文本。这是该组件的 swift UI 代码: struct Main: View { var body: some V
是否可以使用 GeometryReader以这样的方式,它不只是填满父 View ? 作为一个具体的例子,我想使用 .padding(.bottom, geometry.safeAreaInsets.
我需要根据设备的尺寸和屏幕的宽度进行计算。 struct TranslatorView: View { @ObservedObject var settings = TranslationViewMo
我有一个标题 View ,它使用 edgesIgnoringSafeArea 将其背景扩展到状态栏下方。要正确对齐标题 View 的内容/ subview ,我需要来自 GeometryReade
我在 SwiftUI 中有一个水平 ScrollView ,我想将其“动态”居中。 ScrollView 中的内容将是一个动态图表,用户可以通过改变年份来改变它的宽度(5、10、15 年图表水平增长)
有人可以解释为什么:GeometryReader将其内容放置在左上角,而不是中心。GeometryReader占用所有可用空间。 struct ContentView: View { var
我有以下示例: import SwiftUI struct TestSO: View { @State var cards = [ Card(title: "short tit
我有一个叠加 View ,我希望它看起来紧贴其父 View 的顶部边缘(垂直对齐到顶部而不是中心,请参见快照 B)并且能够在点击时半隐藏它(将其向上移动以便它不会遮挡其父 View ,但仍有一部分可见
从今天发布的 iOS 14.0 开始,我的 iOS 代码在很大程度上依赖于 GeometryReader 进行布局,不再运行良好。即,布局是随机的。 在 Xcode 调试器中,我比较了在 iOS 13
我是一名优秀的程序员,十分优秀!