gpt4 book ai didi

ios - 如何设置 UIViewRepresentable 的大小?

转载 作者:行者123 更新时间:2023-12-05 07:09:26 25 4
gpt4 key购买 nike

我想,这个想法是这样的:无论 SwiftUI 中还没有提供什么,都可以使用 UIViewRepresentable 绕过。所以我开始为 TTTAttributedLabel 制作一个 UIViewRepresentable。

但是 API 中缺少一些基本的东西,或者我缺少一些基本的东西:如何设置 UIViewRepresentable 的“内在内容大小”?

很像 SwiftUI Text,我希望我的组件能够根据其容器的大小将自身设置为特定大小。

我的第一个想法是使用固有内容大小,所以我创建了这个:


class SizeRepresentableView: UILabel {
override init(frame: CGRect) {
super.init(frame: CGRect.zero)
text="hello"
backgroundColor = UIColor.systemYellow
}

override var intrinsicContentSize: CGSize {
return CGSize(width: 100, height: 100)
}

required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}

struct SizeRepresentable: UIViewRepresentable {
func updateUIView(_ uiView: SizeRepresentableView, context: Context) {
}

typealias UIViewType = SizeRepresentableView

func makeUIView(context: UIViewRepresentableContext<SizeRepresentable>) -> SizeRepresentableView {
let v = SizeRepresentableView(frame: CGRect.zero)
return v
}
}

struct SizeRepresentableTest: View {
var body: some View {
VStack {
SizeRepresentable()
Spacer()
}
}
}

struct SizeRepresentable_Previews: PreviewProvider {
static var previews: some View {
SizeRepresentableTest()
}
}

但这行不通。标签占据了所有空间,而垫片没有。使用 SwiftUI Text 而不是我的 SizeRepresentable,标签整齐地排列在顶部,垫片占据了所有空间,这是应该的。

我似乎找不到任何关于如何布局 UIViewRepresentable 的文档。

有什么办法解决这个问题?

最佳答案

参见:How does UIViewRepresentable size itself in relation to the UIKit control inside it?

struct SizeRepresentableTest: View {
var body: some View {
VStack {
SizeRepresentable().fixedSize()
Spacer()
}
}
}

关于ios - 如何设置 UIViewRepresentable 的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61556054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com