【发布时间】:2019-06-13 04:28:01
【问题描述】:
有什么方法可以在 SwiftUI 中获取子视图的大小?
我基本上是在寻找相当于 UIKit 的:
self.child.frame.origin.x -= self.child.intrinsicContentSize.width/2.0
我认为 GeometryReader 不会起作用,因为它会返回父级中的可用大小。
[编辑] 我发现可以使用 .alignmentGuide(_, computeValue:) 获取和保存尺寸,尽管这绝对是一个 hack。
LessonSliderText(text: self.textForProgress(self.progress), color: self.completedColor)
.alignmentGuide(HorizontalAlignment.leading) { (dimensions) -> Length in
self.textSize = CGSize(width: dimensions.width, height: dimensions.height)
return 0
}
.offset(x: self.width*self.currentPercentage - self.textSize.width / 2.0)
.offset(y: -self.textSize.height/2.0)
.animation(nil)
.opacity(self.isDragging ? 1.0 : 0.0)
.animation(.basic())
【问题讨论】:
-
你能否展示你的代码并解释你希望你的视图是什么。
-
你能告诉我们你想在绘画中实现什么吗?我认为您可能误解了 SwiftUI 的布局方式......
-
我已经附上了一张图片。我正在尝试将该文本气泡放置在线上方并以白色圆圈为中心。在不影响线路布局的情况下。我粘贴的代码确实做到了。
-
我说的对吗?你需要有一个比你的文字更大的气泡吗?还有圆角?
-
您可以使用 AnchorPreferences 将有关子视图几何图形的信息冒泡到父视图。见:swiftui-lab.com/communicating-with-the-view-tree-part-2
标签: swiftui