我的应用程序中有三个UIViews在另一个下面.UIView的数据由API响应填充。当相应的API响应为零时,我想要隐藏UIView。我正在检查API响应,如果它是nil,我设置[myview setHidden:YES]隐藏视图,但这是我的问题。
假设,如果第二个视图没有任何数据,则它被隐藏但视图的坐标仍然被占用,我的第一个和第三个视图之间有一个很大的空白区域。
为了解决这个问题,我做的是如果第二个视图数据为零,我使用UIView动画方法将第三个视图移动到第二个视图的坐标空间。
这对我来说很好,但是如果我添加第四或第五个视图,这种方法会增加我的代码的复杂性。我相信有比我的方法更好的解决方案,如果你可以引导我找到比我更好的方法,那将会有所帮助。
谢谢
在提供的解决方案中,我选择了适合我的应用程序的Jonah.at.GoDaddy提供的解决方案。感谢其他人提供了很好的投入。
答案 0 :(得分:0)
您可以做的是检查API并且只执行
UIView *APIView1=[[UIView alloc] init];
[self.view addSubview:APIView1];
当您知道API可用时。
答案 1 :(得分:0)
为什么不使用带有0-3个单元格的UITableView,具体取决于你有多少api响应?
答案 2 :(得分:0)
这对你来说可能是一个很好的方法:
1.为要放置视图的每个位置定义坐标,并将这些坐标存储在数组A中
2.每次向/从superview添加/删除视图时,向/从阵列B添加/删除对该视图的引用
3.添加/删除引用后运行循环并从数组A分配坐标以查看来自数组B的帧。通过数组ID分配它们。
4.将该循环放在UIView动画块中。
现在,您可以使用任意数量的视图,并在您想要的位置删除/添加它们。