小编nun*_*123的帖子

SwiftUI - 滚动视图内的垂直居中内容

我正在尝试在我的应用程序上编写一个简单的登录页面。我开始在我新更新的 Mac OS Catalina 上使用 SwiftUI。Apple 文档仍然缺乏很多。我需要在占据整个页面的 Scrollview 上垂直居中一个 VStack,其宽度为 400 的“限制”。

像这样的东西:

ScrollView(.vertical) {
    VStack {
        Text("Hello World")
    }
    .frame(maxWidth: 400, alignment: .center)
}
Run Code Online (Sandbox Code Playgroud)

使用 UIScrollView 很容易,只需要设置 ContentView 以填充高度和宽度,然后在内容视图中居中垂直 StackLayout 但现在使用 SwiftUI 我只是想知道..

目标是这样的(感谢作者)

在此处输入图片说明

如果有人想知道为什么我想要滚动视图中的所有内容,那是因为我的表单非常大,我希望用户同时使用横向和纵向视图,所以我真的需要内容可以滚动,还要记住,在 Ipad 中表单不会填满整个屏幕,这就是我希望它垂直居中的原因。

authentication scrollview ios swiftui

17
推荐指数
2
解决办法
3892
查看次数

RemoveView无法正常工作

我有一个不寻常的错误.我在自定义视图组中有这个.该方法接收一个视图并将其添加到布局,但我不断收到相同的错误:

if((ViewGroup)view.getParent() != null){
    ((ViewGroup)view.getParent()).removeView(view);
}

addView(view); <--- Breakpoints puts the error on this line
Run Code Online (Sandbox Code Playgroud)

错误是:

java.lang.IllegalStateException:指定的子级已有父级.您必须首先在孩子的父母上调用removeView().

在这周围使用断点显示,即使在父级上调用removeView之后,"查看"也会保留对其父级的引用.

有些人建议使用runnable在将其添加到视图之前等待几秒钟.我没有尝试过这个,因为它似乎更像是一个黑客而不是一个解决方案.无论哪种方式,我希望有人可以提供帮助

谢谢!

PS:不是它应该重要,但我添加的这个视图的父级是我制作的自定义网格布局,其父级是一个viewpager.

编辑:

我做了一些断点和调试,从它的外观来看,网格有效地从子列表中删除了视图(debug),但是子视图在其mParent变量(debug)中保持对同一网格的引用.这怎么可能

编辑:

在活动中:

Button button = new Button(mContext);
button.setOnClickListener(mClickListener);
(...)
Random random = new Random();
button.setText(random.nextInt(9999) + " ");

mCurrentGridLayout.addCustomView(button);
Run Code Online (Sandbox Code Playgroud)

在CustomGridLayout viewgroup类中:

public void addCustomView(View view){
    if((ViewGroup)view.getParent() != null){
        ((ViewGroup)view.getParent()).removeView(view);
    }

    addView(view);
}
Run Code Online (Sandbox Code Playgroud)

android viewgroup

5
推荐指数
1
解决办法
4803
查看次数

标签 统计

android ×1

authentication ×1

ios ×1

scrollview ×1

swiftui ×1

viewgroup ×1