我想知道是否可以根据height
中的超级视图将width
和SwiftUI
的比例调整为任何UIControl
?
我们正在做的事情:
let txtFld = UITextField()
txtFld.frame = CGRect(origin: CGPoint(x: 0, y: 0), size: CGSize(width: self.view.frame.width/2, height: self.view.frame.height*0.1))
我知道我们可以通过使用Spacer()
,.padding
和edgeInsets
来调整宽度。但是height
呢?我见过很多SwiftUI
的教程,height
都是静态的。即使在Apple网站上。 solaris_x86_slice
如果有人知道如何设置与视图高度成比例的高度,请在此处分享。因为在某个时候我们需要那样。对于前。如果需要根据设备高度来制作按钮。 (假设iPhone SE = 40,iPhone 8P = 55,iPhone X = 65)
答案 0 :(得分:4)
您可以使用class Parent {
method() {
console.log('parent method');
}
}
class Child extends Parent {
method() {
console.log('child method');
}
invokeParentMethod() {
super.method();
}
}
const c = new Child();
c.method();
c.invokeParentMethod();
从父级那里获取该信息:
GeometryReader
您可以为自己struct MyView: View {
var body: some View {
GeometryReader { geometry in
/*
Implement your view content here
and you can use the geometry variable
which contains geometry.size of the parent
You also have function to get the bounds
of the parent: geometry.frame(in: .global)
*/
}
}
}
创建一个自定义结构,并将其几何形状绑定到变量,以使其可以从View
本身中访问。
首先定义一个名为GeometryGetter的视图(感谢@kontiki):
View
然后,获取Text视图(或任何其他视图)的边界:
struct GeometryGetter: View {
@Binding var rect: CGRect
var body: some View {
return GeometryReader { geometry in
self.makeView(geometry: geometry)
}
}
func makeView(geometry: GeometryProxy) -> some View {
DispatchQueue.main.async {
self.rect = geometry.frame(in: .global)
}
return Rectangle().fill(Color.clear)
}
}