中心多个UIViews连续超级视图?

时间:2011-10-27 23:36:35

标签: iphone objective-c ipad

我如何在他们的超级浏览中心放置相同大小的uiviews数组?

例如:我有一个(x号)50x50大小的视图数组..我将它们紧挨着放在一行中。如何将50x50视图的中心放在超视图的中心?

是否有比我想的更容易的方式?

我的方法是将数组内的视图计数,然后乘以50.这样可以得到图像的宽度。

然后从超视图的宽度中减去该宽度。然后根据该数学放置子视图。

有更简单的方法可以做到这一点吗?

2 个答案:

答案 0 :(得分:1)

你所建议的是一种做法。另一种在旋转设备时保持视图居中的方法是:

  1. 创建一个基本的UIView以用作容器
  2. 将容器bounds属性设置为(0,0,50 * x,50)
  3. 在容器内布置50x50子视图,使其填充
  4. 将容器视图添加为主视图的子视图
  5. 将容器的center属性设置为superview的中心
  6. 将容器视图的autoresizingMask属性设置为UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin

答案 1 :(得分:1)

使用UIView的中心属性

Apple文档说:中心属性可用于调整视图的位置而不改变其大小。

所以你会做这样的事情:

创建一个UIView,其中包含宽度为[array count] x 50的所有50x50视图; 然后将所有50x50视图添加到此容器视图。 将此视图添加到所需视图,然后将其中心点设置为其超视图中心点。

这样的事情:

[my50x50ContainerView setFrame:CGRectMake(0.0, 0.0, [50x050ViewsArray count] x 50, 50.0)];
[self.view addSubview:my50x50ContainerView];
my50x50ContainerView.center = self.view.center;